|
Сброс флага TXC(usart), mega162 |
|
|
|
Jul 2 2007, 08:45
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 2-04-07
Пользователь №: 26 693

|
В даташите написано что флаг нужно сбрасывать записью в него единицы. Можно так делать: Код /* Процедура одиночной передачи байта in : reg_data */ USART_send: sbis UCSR1A,UDRE1 ; ожидание очистки буфера передатчика rjmp USART_send out UDR1,reg_data ; Загрузить байт данных в буфер, начать передачу sbi UCSR1A,TXC1 ; очитска TXC ret // USART_send ? или нужно сначала прочитать регистр, установить этот бит в 1 и записать обратно?
|
|
|
|
|
 |
Ответов
|
Jul 2 2007, 10:40
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 2-04-07
Пользователь №: 26 693

|
Цитата Зачем при этом ТхС сбрасывать - не знаю, бо он вскочит при пустом буфере и пустом передатчике. Да, это мне и нужно, я жду когда _все_ данные(из буфера и сдвигового регистра) передадутся и после этого перевожу контроллер в Suspend режим. Просто вопрос изначально был про использование команды sbi. В Евстифееве(МК семейств Tiny и Mega фирмы Atmel) на 247 странице написано что сбрасывать один флаг в EIFR этой командой нельзя... Вот я и уточнил  ой, не Suspend а Standby ))
|
|
|
|
|
Jul 2 2007, 10:50
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Nikolay Labinskiy @ Jul 2 2007, 14:40)  Просто вопрос изначально был про использование команды sbi. В Евстифееве(МК семейств Tiny и Mega фирмы Atmel) на 247 странице написано что сбрасывать один флаг в EIFR этой командой нельзя... Вот я и уточнил  Читай не Ефстифеева или кого там ещё, а ДШ на кристалл. Цитата UDRE это флаг "от лукавого", выигрыш в скорости - никакой, а проблем в обслуживании масса. Например, тот факт что UDRE меняет состояние до того как кадр был фактически отправлен, не дает возможности использовать его в качестве сигнала для смены направления RS485. Нормальный флаг. Позволяет тупо накачивать данные в УАРТ в прерывании УДРЕ. А направление менять, опять-же, тупо по факту входа в ТхС. Чего здесь "лукавого"? Читай ДШ, думай, делай...
|
|
|
|
|
Jul 2 2007, 11:59
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(defunct @ Jul 2 2007, 15:33)  Лукавого тут - зачем обслуживать 2 прерывания там где хватает одного. 2 прерывания использовать там где хватает одного - это будет так как вы и сказали - "тупо". Чё за проблема, обслуживайте одно. Остро. ТхС в руки. Можно ещё сделать один обработчик по приёму и передаче, бо особо одарённым хватило бы и одного флага. А ещё можно на один обрабоччик свалить все события в МК... Я-ж держусь ламерского подхода - если изготовитель заложил ресурс, позволяющий "тупо" разруливать ситуаццыю, то я предпочитаю не кривляться, а упростить и упорядочить себе жизнь, даже по мелочи. ;О)
|
|
|
|
|
Jul 3 2007, 10:08
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(mse @ Jul 2 2007, 14:59)  то я предпочитаю не кривляться, а упростить и упорядочить себе жизнь, даже по мелочи. ;О) Событие TXC означает: 1. что передача окончена. 2. можно слать сл. символ. С ним не надо "кривляться".
|
|
|
|
Сообщений в этой теме
Nikolay Labinskiy Сброс флага TXC(usart) Jul 2 2007, 08:45 Палыч Так делать можно, но
1. Сбрасываете TXC, а контрол... Jul 2 2007, 09:23 mse Читай даташыт. Если пищешь в УДР по УДРЕ, то ТХЦ н... Jul 2 2007, 09:25 Nikolay Labinskiy Что-то не совсем понял...
Там написано что этот фл... Jul 2 2007, 10:04 mse Цитата(Nikolay Labinskiy @ Jul 2 2007, 14... Jul 2 2007, 10:22 defunct UDRE это флаг "от лукавого", выигрыш в с... Jul 2 2007, 10:31     mse Цитата(defunct @ Jul 3 2007, 14:08) Событ... Jul 4 2007, 05:20      defunct Цитата(mse @ Jul 4 2007, 08:20) Прально. ... Jul 4 2007, 21:28       VladimirYU ИМХО, флаг UDRE придумали для любителей конвейерны... Jul 5 2007, 08:39        =GM= Цитата(VladimirYU @ Jul 5 2007, 07:39) ИМ... Jul 5 2007, 10:09 ae_ Цитата(Nikolay Labinskiy @ Jul 2 2007, 19... Jul 3 2007, 06:43 Nikolay Labinskiy Всем спасибо, вопрос решен. Jul 3 2007, 17:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|