Hallo,
ich habe eine Lochrasterplatine mit einm ESP8266, der mir auf ein
Atmega168 ein RX-Signal senden soll. Baudrate: 115200, Benutzung der
FleuryLib.
Ich bekomme aber immer FrameErrors beim Empfang.
ESP ist mit 3V29 und m168 mit 4V98 angeschlossen (gemessen). High Signal
sollte der m168 bei 3V erkennen.
Ich habe mal den Takt auf PB0 rausgegeben, siehe Screenshot anbei. Sieht
erst einmal gut aus, oder?
2 Kerkos an VCC/AVCC/GND sind vorhanden, weitere uF nach dem LDO. Das
Oszi sagt Vpp=160mV.
Die Leitungslänge des TX Signals beträgt ca. 10cm.
F_CPU ist 73728000UL entsprechend des Quarz Wertes.
Als Ausgabe auf dem Display sehe ich eine 4608, was 0x1200 ist und den
FrameError beschreibt.
1
constuint32_tBAUD=115200;
2
intmain(void){
3
unsignedintreadint;
4
5
_delay_ms(300);
6
7
uart_init(UART_BAUD_SELECT(BAUD,F_CPU));// receive from ESP8266
Woher weisst du, das 0x1200 "FrameError" bedeutet?
Poste mal die uart.h, oder das, worin UART_FRAME_ERROR,
UART_OVERRUN_ERROR bzw. UART_BUFFER_OVERFLOW definiert sind. Für mich
liest sich der Rückgabewert von 0x1200 so, als ob mehr als ein Fehlerbit
gesetzt ist.
Könnte ja auch ein BUFFER_OVERFLOW sein, der darauf zurückzuführen ist,
dass die UART schon munter empfängt & überläuft, während du noch
initialisierst.
einen Frame Error gibt's wenn die Baudrate daneben ist. Die Baudrate
muss auf besser 2% stimmen. Dh bei den AVR : ohne Quarz ist nichts. Der
interne OSC reicht nicht. Allenfalls einen Keramikresonator, wenn's denn
auc cents ankommt. Einen Quarz gibt's fuer 20 cents. Ein
Keramikresonator fuer vielleicht ein Drittel.
Pete K. schrieb:> Die Leitungslänge des TX Signals beträgt ca. 10cm.> F_CPU ist 73728000UL entsprechend des Quarz Wertes.
Das sind 73MHz, also Faktor 10 falsch. Nimm mal eine Null weg und
probiere nochmal.
Ach ja: Fuses korrekt?
Rainer B. schrieb:> Woher weisst du, das 0x1200 "FrameError" bedeutet?
Das ist FrameError | U2Xn.
Warum DoubleSpeed ?
Weil dein Oszi schon an PB2 dranhangt:
Und falls du einen USB to UART TTL Module hast, kannst den an
PB.2 dranhangen und sehen was beim PC ankommt.
P.S.
Nach Reset sendet ESP mit irgendeiner komischen Baudrate, so um die
75KB - paar Sekunden abwarten, dann kommt es mit 115KB...
Jim M. schrieb:> Das sind 73MHz, also Faktor 10 falsch. Nimm mal eine Null weg und> probiere nochmal.
Hi Jim, danke für den Hinweis. Wen man sonst immer nur 8, 16 odeer 20
Mhz verwendet, kann man das schon einmal übersehen :-) (Wald, Bäume,
Brett-vorm-Kopf, etc)
Danke an alle, jetzt scheint es zu funktioneren!!