Witam.
Próbuję uruchomić atmege8 + max232 do komunikacji z kompem. Kabel do komunikacj jest z przeplotem 1,8m. Gdy w uc wystawiam cały czas jeden znak na rsa to w terminalu leci ciąg takich samych znaków np. dla wystawianego 'a' (hex 61) terminal odczytuje <0>rr , obydwa r z akcentami (hex 00 E0 E0). Pełna powtarzalność zjawiska.
Przy transmisji uc -> komputer wychodzą krzaki. Problem jest najprawdopodbniej w programie. Sprawdzałem na 2 atmegach(to samo). Max232 podłączony poprawnie - po zwarciu rx-tx (od strony procesora, ttl) tekst wpisany w terminalu na PC wraca do terminala.
Czytałem specyfikacje atmela. Może coś przeoczyłem. Treść programu jest po części zaczerpnięta z niej. Będę wdzięczny za pomoc.
Pozdarawiam,
Robert
Terminal v1.9b by Br@y++ (baud rate 1200, 8bitów danych, parzystosc - none, 2bity stopu, handshaking - none)
Program w C (AVR Studio 4):
Na schemacie LED przy pinach dla stk200 jest w odwrotnej polaryzacji, tak samo jak kondensator przy max232N przy V-. W biblotekach eagel nie znalazłem 7805 wiec wstawiłem goldpiny 3x1. Nie montowałem kondensatora przy resecie. Rezystory podciągające 2,7k, resetu 8k, kwarc 11,0592MHz. Kondensatory przy max232 1uF elektrolityczne, przy 7805 100uF elektrolityczne.
Próbuję uruchomić atmege8 + max232 do komunikacji z kompem. Kabel do komunikacj jest z przeplotem 1,8m. Gdy w uc wystawiam cały czas jeden znak na rsa to w terminalu leci ciąg takich samych znaków np. dla wystawianego 'a' (hex 61) terminal odczytuje <0>rr , obydwa r z akcentami (hex 00 E0 E0). Pełna powtarzalność zjawiska.
Przy transmisji uc -> komputer wychodzą krzaki. Problem jest najprawdopodbniej w programie. Sprawdzałem na 2 atmegach(to samo). Max232 podłączony poprawnie - po zwarciu rx-tx (od strony procesora, ttl) tekst wpisany w terminalu na PC wraca do terminala.
Czytałem specyfikacje atmela. Może coś przeoczyłem. Treść programu jest po części zaczerpnięta z niej. Będę wdzięczny za pomoc.
Pozdarawiam,
Robert
Terminal v1.9b by Br@y++ (baud rate 1200, 8bitów danych, parzystosc - none, 2bity stopu, handshaking - none)
Program w C (AVR Studio 4):
#include <avr/io.h>
#define BAUD 1200//115200
#define MYUBRR 11059200/16/BAUD-1
int main(void)
{
DDRC=0xff;
char znak[20]="abcdefghijklmnopqrst";
unsigned char i;
// inicjalizacja portu rs
unsigned int ubrr;
ubrr = MYUBRR;
while (!(UCSRA & (1<<UDRE)));
UBRRH = (unsigned char)(ubrr >> 8); // ustawienie UBRR
UBRRL = (unsigned char) ubrr;
UCSRB = (1<<RXEN)|(1<<TXEN); // uruchomienie RX TX
UCSRC = (1<<USBS)|(3<<UCSZ0); // 8 bitow danych, 2 bity stopu
while (1)
{
for(i=0; i<20; i++) // wyslanie tablicy
{
while (!(UCSRA & (1<<UDRE)));
UDR=znak[i];
}
}
/*
}
while(1) // nieskonczone odbieranie
{
while ( !(UCSRA & (1<<RXC)) );
PORTC=UDR;
UCSRA=0;
}*/
while(1);
return 0;
}
Na schemacie LED przy pinach dla stk200 jest w odwrotnej polaryzacji, tak samo jak kondensator przy max232N przy V-. W biblotekach eagel nie znalazłem 7805 wiec wstawiłem goldpiny 3x1. Nie montowałem kondensatora przy resecie. Rezystory podciągające 2,7k, resetu 8k, kwarc 11,0592MHz. Kondensatory przy max232 1uF elektrolityczne, przy 7805 100uF elektrolityczne.