Цитата(David_Ali @ Apr 23 2013, 21:40)

Ребята, ну кто нибудь скажите мне почему на меге8 вместо нормальной работы, он работает в режиме эха??
Интересно, а как оно должно работать если у вас в коде
Код
//Обработка прерывания чтения USART
ISR(USART_RXC_vect)
{
int b;
b = UDR;
USART_Transmit( B ); //Отправляем то, что получили
}
каждый принятый байт обратно отсылается?
И кроме того, функция main странная:
Код
int main(void)
{
unsigned char data;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0x00;
USART_Init (MYUBRR);
sei();
while(1)//вечный цикл
{
if(data=='A')
{
PORTB=0xFF;
}
if(data=='B')
{
PORTB=0x00;
}
}
}
В цикле while проверяется переменная data, которая есть локальная переменная функции. Её значение не может изменится и наверное оптимизатор все эти проверки выкинет.
Сделайте так:
Код
volatile unsigned char data;
//Обработка прерывания чтения USART
ISR(USART_RXC_vect)
{
//int b; // зачем тут int?
data = UDR;
USART_Transmit( data); //Отправляем то, что получили
}
void main ()
{
// инициализация
while (1) {
if (data=='A') {
// и так далее
}
}
}