Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

А что, если FlagTx_3 изначально = 2 ? И ?

Отправлено Юрий_СВ (213.5.199.158) 23 февраля 2011, г. 16:22
В ответ на: Доработал так отправлено Oleg_IT 23 февраля 2011, г. 15:42

1)Плохая привычка не задавать начальные значения переменных и флагов.
2) Это неверно:
UBRR0L = 14; // fosc = 13.824 MHz U2X = 0 BR = 57.6k
UBRR0H = 0;
Сначала UBRR0H, а потом UBRR0L (при чтении - наоборот).
"Writing UBRRL will trigger an immediate update of the baud rate prescaler."
3) UDR0 = Buff[0]; - в самый конец StartTX_3(void)
(после UCSR3B |= ((1 << TXEN3) | (1 << UDRIE3));)

4) Вы раньше вообще с прерываниями работали ? Что вы творите ?
Результат работы такой конструкции - непредсказуем.
void StartTX_0(void) {PORTF |= (1 << 0);}
ISR (USART0_UDRE_vect) {PORTF &=~ (1 << 0);}

void StartTX_3(void) {PORTF |= (1 << 1);}
ISR (USART3_UDRE_vect){PORTF &=~ (1 << 1);}
Хотя бы в StartTX делайте критическую секцию.
CLI
PORTF |= (1 << 1);
SEI


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 93:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru