реклама на сайте
подробности

 
 
> При включении питания отсылает по USART мусор...
MSprut
сообщение Aug 21 2007, 08:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 225
Регистрация: 25-04-06
Из: Украина, Луганск
Пользователь №: 16 476



Имеется два устройства на мега32 и мега88, связанных по USART. Устройство на мега88 управляет общим питанием и имеет резервное питание от батареи для работы в спящем режиме. При влючении основного питания мега88 сразу передает 0х00 и этим вводит в ступор второе устройство. Никак не могу эту фигню убрать. Может кто сталкивался с таким?
Код
//mega88
void Init_USART(unsigned int baudrate)
{
    UBRR0H = (unsigned char) (baudrate >> 8);
    UBRR0L = (unsigned char) baudrate;
    UCSR0B = (1 << RXCIE0) | (1 << RXEN0) | (1 << TXEN0);
    RxTail = 0;
    RxHead = 0;
    TxTail = 0;
    TxHead = 0;
}

Код
//mega32
void init_USART(unsigned int baudrate)
{
    UBRRH = (unsigned char) (baudrate >> 8);
    UBRRL = (unsigned char) baudrate;
    UCSRB = (1 << RXCIE) | (1 << RXEN) | (1 << TXEN);
    UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
    RxTail = 0;
    RxHead = 0;
    TxTail = 0;
    TxHead = 0;
}

Так все работает хорошо и устойчиво, но вот эта бага всю малину мне х...т
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Aug 21 2007, 09:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Ниже по тексту я просто высказываю свою догадку исходя из собственного опыта. То есть не претендую на истину.

Скорее всего ничего плохого по включению питания не происходит. И ни какой 0 не передаётся. Причина в разном времени сброса на этих однокристалках. То есть одна принимающая (слэйв) не завершила ещё инициализацию, а передающая (мастер) уже завершила и передаёт вполне осмысленную информацию. Ну а как результат - 0.

Если моя догадка верна, то необходимо сделать начальную процедуру синхронизации. Я это везде делаю где применяется несколько однокристаллок. В самом примитивном случае необходимо чтобы мастер заканчивал инициализацию последним.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016