}
не понимаю почему нет прерывания. Как понимаю после того как URD принимает байт должно вызваться прерывание и как я написал ножка порта инвертироваться. То есть мигать по сути. Как передатчик использовал другую ногу как TxD. В чем может быть причина.
в общем то у меня получилось отправлять и принимать данные. причем повесил сравнение на принятый байт и действие. но сегодня написав код на другом компе получилась непонятная абра кадабра. прерывания совсем никак не хотели появляться. сравнив код разницы не заметил. для управления выбраны те же самые биты в регистрах. все совершенно одинаково.
а на данный момент codevishion пишет что библиотека alcd.lib испорчена и не может использоваться
какая то непонятная ерунда. то пишешь код и прерывание работает по приему. то пишешь уже другой код и не работает. не могу понять где допускаю ошибку при написании.
ха. взял объявил
UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
в конце списка перед while (1) и все заработало. интересно как и почему это произошло. ну теперь надо дальше уже думать что отправлять и зачем
мое предположение. сначала нужно объявить порты ввода вывода а уже затем только UART. иначе не получается
UCSRA=(0<<MPCM|0<<U2X|0<<UPE|0<<DOR|0<<FE|0<<UDRE|0<<TXC|0<<RXC);
UCSRB=(0<<TXB8|0<<RXB8|0<<UCSZ2|0<<TXEN|1<<RXEN|0<<UDRIE|0<<TXCIE|1<<RXCIE); //Вот тут разрешается прерывание по приёму (RXCIE)
UCSRC=(0<<UCPOL|1<<UCSZ0|1<<UCSZ1|0<<USBS|0<<UPM0|0<<UPM1|0<<UMSEL|0<<URSEL);
После этого прерывания USART все запрещены. Если же переставить верхние три строчки перед while(1), в UCSRB оказывается не ноль, а правильное значение.
Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.