Иероглифы в Serial после сна

Тема в разделе "Arduino & Shields", создана пользователем Unikolai, 22 янв 2018.

  1. Unikolai

    Unikolai Гик

    Код (C++):
    ADCSRA = 0;//ОТКЛЮЧАЕМ АНАЛОГОВЫЙ КОМПАРАТОР*
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
      sleep_enable();
      //MCUCR = bit (BODS) | bit (BODSE);
      //MCUCR = bit (BODS);
      sleep_cpu ();
      sleep_disable();
    Здравствуйте,вот такой код сна.. и все бы хорошо, если бы не sleep_enable(); без этой строки мк хоть и спит, но в ком порт идут кракозябры
    Код (C++):
    ¦HшHш
     
    безэтой строки никто не спит, но в порт иет то, что надо. мк мега644
    как это исправить?
     
  2. b707

    b707 Гуру

    А если после сна вызывать заново Serial.begin() с нужной скростью порта?
     
  3. Unikolai

    Unikolai Гик

    я как понимаю сериал бегин делает вот это
    Код (C++):
    PRR0 |= (1<<PRUSART0); //turn  USART OFF
    PRR0 &= ~(1<<PRUSART0); //turn USART ON
     
    если так, то можно сказать да

    "Bit 1 – PRUSART0: Power Reduction USART0

    Writing a logic one to this bit shuts down the USART0 by stopping the clock to the module. When waking up the
    USART0 again, the USART0 should be reinitialized to ensure proper operation."

    к слову, засыпать пытался и напрямую, через регистры(заменяя злосчастную строку)
    Код (C++):
    SMCR = (0 << SM2) | (1 << SM1) | (0 << SM0) ;
    SMCR = (1 << SE);
    в любом случае я не понимаю...как устновка бита SE в совсем другом регистре может так повлиять на сериал...
     
    Последнее редактирование: 22 янв 2018