Hallo zusammen, hab hier ein kleines problem mit UART auf ATmega88 (bin
neu bei UART, aber hab schon mit atmels gearbeitet). Das problem
nämlich: will daten vom computer lesen, dafür zwichen den uC und den
rechner gibts max3232 (wenn das wichtig ist). Ich starte das "gerät" und
bekomme ständig auf dem lcd nur '#' oder sowas ähnliches. Aber das gerät
ist überhaupt nicht mitm computer verbunden! Hier ist das source:
1
// in der tabelle vom datasheet steht's error=0.0% für 8MHz und 250k baud
2
uart_init(UART_BAUD_SELECT(250000,F_CPU));// F_CPU is 8000000
250 kBd? Welche PC-Schnittstelle kann das denn? Und wenn sie es
tatsächlich können sollte, weiß der PC das auch, dass er mit 250 kBd
senden soll?
Welche Taktquelle verwendet der Controller?
Ich bezweifle, dass der PC eine Baudrate von 250000 Baud unterstützt.
Normalerweise ist das maximum 115200 Baud, versuch es aber zum Anfangen
lieber mal mit 9600 Baud.
Was verwendest Du auf der PC-Seite um Daten auf die RS232 zu senden?
Hyperterminal? Welche Einstellungen?
Fehlt da nicht noch ein LCD-Init in deiner uC Software?
Peter wrote:
> Ich bezweifle, dass der PC eine Baudrate von 250000 Baud unterstützt.> Normalerweise ist das maximum 115200 Baud,
Und wenn höher, dann eher 230400 Bd, aber keine 250000...
Allerdings schreibt er ja, dass (noch) gar keine Verbindung zum
"Rechner" besteht...
Jup, es gibt noch keine verbindung zw. max3232 und den computer. also
nur zw uC und max3232 ... warum sollte der rechner 250k nicht
unterstützen, es existiert die möglichkeit, wenigstens auf meinem
lenovo, aber ok, das ist jetzt in dem fall kleinigkeit. aber i kann auch
mit 9.6k oder 19.2k versuchen, in der tabelle steht für sie 0.2%. i
benutze der interne oszillator
Ja, trotzdem, das ist kein grund ständig interrupts zu bekommen (soweit
ich das lib von fleury verstehe, uart_getc() liefert ein char, nur wenn
ein interrupt entstanden ist). und wenn ich ständig lesen kann ->
ständig interrupts, oder?
Es scheint nur so, als könntest du ständig was lesen, weil uart_getc
einen 16-Bit-Wert zurück gibt und die Info "nichts empfangen" steckt in
den oberen 8-Bit. Bei einer Zuweisung an ein char geht diese Info somit
verloren.