snazim sa rozchodit komunikaciu atmegy8 s GSM modulom, kde komunikacia bezi iba na frekvencii 115200. Frekvenciu atmegy som nastavil v poistkach na internych 8MHz ( lfuse = 0xE4 ; hfuse = 0xD1 ). UBBR mi vyssiel podla datasheetu strana 155 na hodnotu 3. Pre istotu som hodnotu ale nechal vypocitat v programe kodom:
Kód: Vybrať všetko
ubrr = F_CPU / 16 / baudrate - 1;
Kód: Vybrať všetko
void uartInit( unsigned int baudrate )
{
unsigned int ubrr;
ubrr = F_CPU / 16 / baudrate - 1; /* F_CPU mam v Makefile nastavene na 8000000UL */
UBRRH = (unsigned char) ( ubrr >> 8 );
UBRRL = (unsigned char) ubrr;
UCSRB = ( 1 << RXEN ) | ( 1 << TXEN );
UCSRC = ( 1 << URSEL ) | ( 1 << UCSZ0 ) | ( 1 << UCSZ1) ;
}
void uartTransmit( unsigned char data )
{
while ( ( UCSRA & ( 1 << UDRE ) ) == 0x00 )
;
UDR = data;
}
void delay( char sec )
{
int i, j;
for ( i = 0; i < sec; i++ )
for ( j = 0; j < 10; j++ )
_delay_ms( 100 );
}
int main( void )
{
uartInit( 115200 );
while( 1 )
{
uartTransmit( 'A' );
delay( 1 );
}
return 0;
}