Witam
Mam problem z inicjalizacją portu RS232 na Atmedze162, szybkość transmisji 115200. 8, N, 1 oto kod:
Problemy są 2:
1. Program nie wchodzi do obsługi ww. przerwania
2. Nie wysyła wszystkich znaków poprawnie, z tablicy frame11 nie wysyła 0x11?
Zaprojektowany układ ma współpracować z Nokią 6610 poprzez fbus. tablica wysyłana na RS232 jest we Flashu, gdyż zajętość programu dla Data 99%.
Podejrzewam, że to wina programu, dlatego proszę Was o pomoc w tej sprawie, połączenia sprawdzałem kilka razy.
Pozdrawiam
Mam problem z inicjalizacją portu RS232 na Atmedze162, szybkość transmisji 115200. 8, N, 1 oto kod:
//Zmienne
volatile unsigned char buffers[55];
volatile unsigned char counter=0;
const unsigned char frame1[] PROGMEM={0x1E,0X00,0X0C,0X7F,0X00,0X02,0X17,0X01,0X05,0x7C};//10
const unsigned char frame11[] PROGMEM={0x1E,0X00,0X0C,0X17,0X00,0X08,0X00,0X01,0X00,0x0A,0x02,0x00,0x01,0x47,0x11,0x53};//16
...
//Ustawienie portu RS232
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSR0B =(1<<RXEN0) | (1<<RXCIE0) | (0<<UDRIE0) | (1<<TXEN0);
//Atmega162
//115200. 8, N, 1
UCSR0C =(1<<URSEL0)|(0<<USBS0)|(3<<UCSZ00);
}
ISR(USART0_RXC_vect )
{
if(counter<255)
{
counter++;
}else
{
counter=0;
}
unsigned char buf;
buf=UDR0;
buffers[counter]=buf;
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) )
;
/* Put data into buffer, sends the data */
UDR0 = data;
}
void main(void)
{
...
for (i=0;i<=9;i++)
{
USART_Transmit(pgm_read_byte(&frame1[i]));
}
_delay_ms(1000);
for (i=0;i<=15;i++)
{
USART_Transmit(pgm_read_byte(&frame11[i]));
}
}
Problemy są 2:
1. Program nie wchodzi do obsługi ww. przerwania
2. Nie wysyła wszystkich znaków poprawnie, z tablicy frame11 nie wysyła 0x11?
Zaprojektowany układ ma współpracować z Nokią 6610 poprzez fbus. tablica wysyłana na RS232 jest we Flashu, gdyż zajętość programu dla Data 99%.
Podejrzewam, że to wina programu, dlatego proszę Was o pomoc w tej sprawie, połączenia sprawdzałem kilka razy.
Pozdrawiam