Mam problem z komunikacją Attiny 2313 -> Rs232 -> PC. Gdy wysyłam znak poprzez uC to odbieram całkowicie co innego (FV a wysyłałem Adas), a dodatkowo jak zmieniłem uC to otrzymałem LH. Kod jest z noty katalogowej tego uC:
Próbowałem także kodu z http://mikrokontroler.info/usart-w-mikrokontrolerach-avr/
oczywiście po lekkich modyfikacjach.
Nie mam pojęcia co jest nie tak. Połączenie przez maxa jest poprawne, sprawdzałem to tak że jak sygnał wyjściowy z maxa szedł do uC to podałem go na wejście do maxa i na komputerze dobrze wszystko wyświetlało.
#include <avr/io.h>
#include <avr/interrupt.h>
#define RS_BAUD 9600
#define RS_UBRR F_CPU / 16 / RS_BAUD - 1
void USART_init(unsigned int bd)
{
UBRRH = (unsigned char) (bd>>8);
UBRRL = (unsigned char) bd;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<USBS)|(3<<UCSZ0);
}
void USART_tran (unsigned char data) //wysyłanie
{
while (!(UCSRA & (1<<UDRE)));
UDR = data;
}
unsigned char USART_rec (void) // odebranie znaku
{
while (!(UCSRA & (1<<RXC)));
return UDR;
}
void USART_date(const char *s )
{
while (*s) USART_tran(*s++);
}
int main(void)
{
UART_init(RS_UBRR);
uart_date("Adas");
while(1)
{ }
}
Próbowałem także kodu z http://mikrokontroler.info/usart-w-mikrokontrolerach-avr/
oczywiście po lekkich modyfikacjach.
Nie mam pojęcia co jest nie tak. Połączenie przez maxa jest poprawne, sprawdzałem to tak że jak sygnał wyjściowy z maxa szedł do uC to podałem go na wejście do maxa i na komputerze dobrze wszystko wyświetlało.