Mam odbiornik MAX485 podłączony pod Atmegę16.
Stany poczatkowe:
-ustawione przerwanie na odbiór UARTa
- stan niski na DE/RE w odbiorniku Max 485
- Max 485 na RO,DI stan wysoki ( równierz Atmega RxD) !!?
Wysyłam dane: (z odbiornika wychodzą prawidłowo 0 i 1)
- Wchodzę w przerwanie i klapa. - same zera.
Pytanie brzmi: co jest źle? Jak procesor orientuje sie ze wysłano do niego bajt?
Stany poczatkowe:
-ustawione przerwanie na odbiór UARTa
- stan niski na DE/RE w odbiorniku Max 485
- Max 485 na RO,DI stan wysoki ( równierz Atmega RxD) !!?
Wysyłam dane: (z odbiornika wychodzą prawidłowo 0 i 1)
- Wchodzę w przerwanie i klapa. - same zera.
Pytanie brzmi: co jest źle? Jak procesor orientuje sie ze wysłano do niego bajt?
ISR(USART_RXC_vect ) //SIG_UART_RECV
{
lcd_gotoxy( 0,0);
write_znak('P',1); // znacznik że wszedłem w przerwanie
unsigned char i=0;
byte=UDR;
bit(byte); // umieszcza na wyswietlacu bity
if (byte==':') // sprawdzenie czy poczatek ramki (:)
{bit_start=1; bit_stop=0;
lcd_gotoxy( 1,0);
write_znak('S',1);// znacznik
}
if (byte==';' && bit_start==1) // sprawdzenie czy koniec ramki (;)
{bit_start=0; bit_stop=1;
lcd_gotoxy( 2,0);
write_znak('R',2);//znacznik
_delay_ms(100);
}
if (bit_start==1)
{RX_ramka[i]=byte; i++;
bit(byte);
_delay_ms(500);}
if (bit_stop==1)
odebr_zn='1'; // koniec ramki - do prog. glownego
}void bit(unsigned char bit)
{
char i;
lcd_gotoxy( 0,2);
for(i=0;i<8;i++)
{
if (bit & 0x80)
write_znak('1',1);
else write_znak('0',1);
bit<<=1;
}
}