Witam
Mam taki problem. Grzebiąc po archiwach elektrody znalazłem gotowe funkcje do inicjalizacji USART i transmisji danych. Niestety, w HyperTerminalu wyskakują mi "śmieci" zamiast tego, co chciałem przesłać. Domyślam się, że może być problem z dobraniem argumentów przy inicjalizacji. Dodam, że komunikacja odbywa się prawidłowo, gdy piszę w Bascomie, więc problemy natury elektronicznej odpadają. Korzystam z wewnętrznego oscylatora RC. Czy ktoś mógłby mnie naprowadzić na jakiś trop? Z góry dziękuję.
Mam taki problem. Grzebiąc po archiwach elektrody znalazłem gotowe funkcje do inicjalizacji USART i transmisji danych. Niestety, w HyperTerminalu wyskakują mi "śmieci" zamiast tego, co chciałem przesłać. Domyślam się, że może być problem z dobraniem argumentów przy inicjalizacji. Dodam, że komunikacja odbywa się prawidłowo, gdy piszę w Bascomie, więc problemy natury elektronicznej odpadają. Korzystam z wewnętrznego oscylatora RC. Czy ktoś mógłby mnie naprowadzić na jakiś trop? Z góry dziękuję.
#define BAUD 4800
#define FOSC 1000000 // tu definiujesz wartość uzywanego kwarcu
#define MYUBRR FOSC/16/BAUD-1
#include <avr/io.h>
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
int main(void)
{
USART_Init ( MYUBRR );
for(;;)
{
USART_Transmit(1234);
}
}
