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

 
 
 
Reply to this topicStart new topic
> UART на Mega8A не работает? или?
Batman
сообщение Sep 25 2010, 19:55
Сообщение #1


Частый гость
**

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



Стандартная программа передачи по асинхронному UART
Инициализирую:
Цитата
void USART_init(void)
{
int temp;

temp = baud_r;

UBRRH = (unsigned char)(temp>>8);
UBRRL = (unsigned char)temp;


UCSRB = (1<<RXEN) | (1<<RXCIE);
UCSRA = (1<<U2X);

UCSRC = (1<<URSEL)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);

}

и принимаю по прерыванию:
Цитата
ISR (SIG_UART_RECV)
{
control=UDR;

if (control!=100) PORTD=0;

switch (control)
{

Так вот контроллер в прерывание не заходит (sei включено), прерывание от АЦП работает. Фишка в том, что в предыдущем устройстве, где используется mega 8L (без A) все это работало... У кого было что-нить подобное... Как правило по опыту, кривые руки вероятнее чудес, к сожалению. Где копать-то? biggrin.gif
Go to the top of the page
 
+Quote Post
ведущий_специали...
сообщение Sep 25 2010, 20:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 24-11-07
Пользователь №: 32 645



у меня другая проблема возникла. Порт не захватывает состояние из 1 в 0. Видимо в регистрах что то намутили. В том же устройстве м8l работает прекрасно. Уарт вроде норм живет....Проверю досканальней.
Go to the top of the page
 
+Quote Post
Batman
сообщение Sep 25 2010, 20:14
Сообщение #3


Частый гость
**

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



glare.gif Странно.... а у меня захватывает нормально, специально проверил, думал может нога внутри отвалилась... считывал ногу и передавал на другую... со светодиодом. Поморгал. Все ок. Атмел решил, упаковать по "сюрплизу насяльнику" в каждый МК что-ли?

Сообщение отредактировал Batman - Sep 25 2010, 20:15
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 25 2010, 20:17
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Проверьте без стоп-бита (уберите USBS бит).
Так все равно должно работать, даже если этот бит есть во входной посылке.
А то бывают случаи, когда прошивку делают с лишним стоп-битом, а потом садятся за комп, на котором этот стоп-бит не установлен - вот и не выходит у них прием.

Потом еще baud_r проверьте - помните , что у вас включено удвоение (установлен U2X)! А то забыв про это, устанавливают на компе скорость baud_r бод, а потом плачут, что не работает.
Go to the top of the page
 
+Quote Post
Batman
сообщение Sep 25 2010, 20:23
Сообщение #5


Частый гость
**

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



Скорость не причем... Он не заходит в прерывание вообще... не видит старт бит... mad.gif
Go to the top of the page
 
+Quote Post
Xenia
сообщение Sep 25 2010, 20:27
Сообщение #6


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Batman @ Sep 26 2010, 00:23) *
Скорость не причем... Он не заходит в прерывание вообще... не видит старт бит... mad.gif

А разве по старт-биту происходит прерывание? Прерывание должно происходить по концу посылки.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 26 2010, 05:57
Сообщение #7


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Стесняюсь спросить: а как у Вас с лог. уровнями и фронтами?
Go to the top of the page
 
+Quote Post
Batman
сообщение Sep 26 2010, 06:51
Сообщение #8


Частый гость
**

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



Xenia Да, верно. Я имел ввиду, что прерывание не происходит даже если проводком замкнуть rxd на землю. Он по окончании должен войти в прерывание и установить флаги ошибок.
Pasha Если вопрос об уровне напряжения 0-1 и крутизне... Тогда в норме.
Здесь нет вопроса о корректном или не корректном приеме. Такое чувство, что УАРТА вообще нет

Ведущий_специалист, попробуйте с УАРТОМ, отпишитесь rolleyes.gif

Сообщение отредактировал Batman - Sep 26 2010, 10:23
Go to the top of the page
 
+Quote Post
Batman
сообщение Sep 26 2010, 11:27
Сообщение #9


Частый гость
**

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



не, неправильно ноги у него работают. Хотел сделать программный уарт, ничего не получается. Не видит он перехода из 1 в 0. Из 0 в 1 видит

Это не работает:
Цитата
uin2 = (PIND & (1<<PD0))>>PD0;
if (uin2==0) tst1;
else tst0;

Это работает
Цитата
uin2 = (PIND & (1<<PD0))>>PD0;
if (uin2==1) tst1;
else tst0;


tst - это светодиод вкл/выкл

компилятор винавр... может он...

Сообщение отредактировал Batman - Sep 26 2010, 11:28
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 26 2010, 21:08
Сообщение #10


Гуру
******

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



А причём здесь ноги?!!!! Вы соображаете что пишете?
Сами хоть подумайте!
Что значит "Не видит он перехода из 1 в 0. Из 0 в 1 видит"???

Процу вообще до лампочки. Вы просто читаете порт. Там либо 0 либо 1. Что значит в вашем понимании "переход"? Если "он видит" переход из 0 в 1 (читай вы видите - то есть вы видите и нули и единицы), то обратный переход вы также обязаны видеть.
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Sep 27 2010, 04:34
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



to Batman
1. А каким образом управляется PD0 ??
2. поконкретнее что такое tst0 & tst1 ? макросы ?
3. зачем нужна uin2 ? Не проще так :
Код
if ((PIND & _BV(PD0)) tst1;
   else tst0;


Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 3 2010, 18:09
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



С флагами прерывания приёмника и передатчика надо поиграть. Одновременно приёмник и передатчик что-то глючат, но стоит лишний раз флаги сбросить - начинает работать.


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 19:42
Рейтинг@Mail.ru


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