Witam. Na początku zaznaczę, że jestem początkujący i dopiero zaczynam programować AVRy. Próbowałem napisać program do obsługi RS232, który będzie wysyłał znak z uc na komputer. Niestety w terminalu zamiast wysłanego znaku widzę jakieś krzaki. Siedzę nad tym drugi dzień i nie mogę odkryć co robię nie tak. Układ który wykorzystuję to kupiony zestaw uruchomieniowy więc błąd leży pewnie po stronie programowej. Dodam jeszcze, że korzystam z adaptera USB-RS232 YT-105.
Poniżej zamieszczam kod i screen z terminala(może błąd tkwi w jego konfiguracji bo nigdy tego nie robiłem). Będę wdzięczny za pomoc.
Kod:
screen:

Poniżej zamieszczam kod i screen z terminala(może błąd tkwi w jego konfiguracji bo nigdy tego nie robiłem). Będę wdzięczny za pomoc.
Kod:
#include <avr\io.h>
#define CPU_Hz 8000000
#define BAUD 9600
#define MYUBRR CPU_Hz/16/BAUD-1
// **** fukcje dla RS232 ****
void USART_init(unsigned int ubrr)
{
UBRRH = (unsigned char) (ubrr>>8);
UBRRL = (unsigned char) ubrr;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
int rs_put(char znak)
{
//oczekiwanie aż bufor nadajnika jest pusty
while (!(UCSRA & (1<<UDRE))){};
UDR = znak;
return 0;
}
unsigned char rs_get (void) // odebranie znaku
{
while (!(UCSRA & (1<<RXC)));
return UDR;
}
int main (void)
{
USART_init(MYUBRR);
char temp;
temp='k'; //znak który ma być wysłany
for(int i=0;i<2;i++)
{
rs_put(temp);
}
}
screen:
