USART Problem. Es werden nicht die richtigen Daten übertragen

#4473227
Lesenswert?

Guten Abend,
Ich programmiere mich zurzeit in denn USART des ATMega328P ein. Und habe 
ein Problem. Und zwar wie man unten im Code sehen kann wir über UDR0 = 
'H'; ein "H" gesendet. Nur dieses kommt als . im Arduino Serial Monitor 
wieder und in HTerm kommt es als kleiner Kasten wieder.
Um die Daten zu Empfangen nutze ich ein USB zu TTL Konverter(PL2303HX).
Baudraten sind richtig eingestellt. Auch in vielen Youtube Videos wie 
fast denn gleichen Code haben, also auch über UDR0 = 'XXX'; senden kommt 
in dem Terminal das richtige an.
Was mache ich denn falsch?
1
#define F_CPU 16000000UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
#define BAUD 9600
7
#define UDR_Value = ((F_CPU / 16 / BAUD) - 1)
8

9
int main(void){
10
  
11
  UBRR0H = (UDR_Value>> 8);
12
  UBRR0L = UDR_Value;
13
  
14
  UCSR0C = (1<<UCSZ01) | (1<<UCSZ00);
15
  UCSR0B = (1<<RXEN0) | (1<<TXEN0);
16
  
17
    while (1) {
18
    UDR0 = '8';
19
    _delay_ms(2500);
20
    
21
    }
22
}

Kann mir da einer helfen?
Mfg Jan Niehues .
Gast #4473257
Lesenswert?

Lass mal in der Hauptschleife eine LED an mit blinken und prüfe ihre 
Frequenz.
1
    DDRB=1; // Led an PB0 und GND
2

3
    while (1) 
4
    {
5
       UDR0 = '8';
6
        _delay_ms(2400);
7
       PORTB |= 1;
8
       _delay_ms(100);
9
       PORTB &= ~1;
10
    }

Die LED muss alle 2,5 Sekunden regelmäßig blitzen.

Wenn nicht, dann stimmt F_CPU nicht, oder die Fuse CLK/8 ist falsch 
gesetzt oder der Quarz schwingt nicht richtig (falsche Kondensatoren?) 
oder die Fuses für die Taktquelle sind falsch eingestellt.

Nachtrag: Manno, Wolfgang war schneller :-)
#4473271
Lesenswert?

Wolfgang schrieb:
> Und sendet der ATMega328P auch mit der eingestellten Baudrate?
> Mit welchem CPU-Takt läuft dein ATMega328P?
> Wie stehen die Fuses von deinem ATMega328P?
> Hast du den Diodenblinktest gemacht?
>
> Versuch mal auf dem PC mit 1200Bd zu empfangen.

Zu Frage 1) Wie kann ich denn sowas überprüfen
Zu Frage 2) Er läuft mit 16 Mhz Quarz.
Zu Frage 3) Fuses?? Ich programmiere ja mein Atmega328p über das Arduino 
UNO und dann auf ein Breadboard(RESET an RESET, +5 Volt an + Linie, 0 
Volt an - Linie, und RX und TX an die Pins des Atmega328ps.
Zu Frage 4) Wie genau, soll ich diesen Test machen? Mit _delay_ms(500); 
und dann Led an und dann wieder aus und dazwischen halt _delay_ms???
Also falls du das so meinst blinkt die LED jede Sekunde 1 mal

5) Ich habe alle durchprobiert es kommen andere Zeichen an hauptsächlich 
dieses kleine Rechteck
#4473283
Lesenswert?

Stefan U. schrieb:
> Die LED muss alle 2,5 Sekunden regelmäßig blitzen.
>
> Wenn nicht, dann stimmt F_CPU nicht, oder die Fuse CLK/8 ist falsch
> gesetzt oder der Quarz schwingt nicht richtig (falsche Kondensatoren?)
> oder die Fuses für die Taktquelle sind falsch eingestellt.
>
> Nachtrag: Manno, Wolfgang war schneller :-)

Diese blink alle 2,5 Sekunden. Kann nicht genau sagen. Da ich das 
versucht habe mir der Stuppuhr zu machen. Aber sie blink immer 
regelmäsßig.
Gast #4473307
Lesenswert?

Er wollte wissen, welche Hardware (Bauteile) du verwendest.

Du nimmst eine Stoppuhr (dein Smartphone) und misst die Zeit für 10 
Blinker. Das müssen dann zusammen 25 Sekunden ergeben.

Jedenfalls, wenn die LED wirklich alle 2,5 Sekunden blinkt, dann stimmt 
die Taktfrequenz. Was meinst du damit, dass du es nicht genau messen 
kannst?

> Bevor man etwas in das Register UDR0 schreibt, sollte man testen,
> dass man das auch darf !

Er wartet 2,5 Sekunden nach jeden Zeichen! Das ist wie mehr als 
ausreichend. Dieser Test ist in diesem einfachen Programm nicht nötig. 
Lass uns mal lieber die Problemursache finden.
#4473319
Lesenswert?

Sebastian S. schrieb:
> Na welche Hardware Du benutzt.
> Ist es ein Eigenbau? Dann könnte ein Schaltbild helfen. Du wärst nicht
> der Erste, der sich da vertan hat.
> Ist ein fertiges Teil, so könntest Du den Namen verraten. Das hilft
> beim: "Mach doch folgendes" oder so.
> Muss aber nicht sein...

Selbst gebaut. Es ist zurzeit nix angeschlossen aus folgende Bauteile:
- Atmega328p(logisch)
- Vcc und GND
- Avcc, AGND, und 100nf an AREF(Ich habe die anderen Bauteile nur von 
ein anderen Projekt entfernt)
- Quarz 16 mz an Pin 9 und 10 und dazu noch 22 PF Kondensator(Gegen auf 
minus)
Und dann nur noch der Umwandler auf 9Volt Batterie auf 5 Volt(Also 
Festspannungsregler, Diode, 100 uf und 10uF Elkos) Werden aber nicht 
beansprucht ist nur für die Externe Spannungsversorgung da.

Ich programmiere mein CHip über AVRdude(Arduino UNO board) dann RX, TX, 
RESET, 5 Volt und GND an mein Breadboard zur Übertragung.
#4473360
Lesenswert?

Stefan U. schrieb:
> Ich ahne, dass du deine seriellen Leitungen doppelt belegt hast (durch
> den µC des Arduino Uno und deinen einzelnen Chip).

Also ich programmeire mit dem Arduino Board. Dann schließe ich das Ab 
und dann schließe ich denn Apdater an und empfange das Singal damit.

Das UNO board wird nur fürs Programmieren genutzt.

Stefan U. schrieb:
> Du könntest das Kabel zum PC mal vom AVR trennen und dort einfach RxD
> mit TxD verbinden. Dann schau nach, ob die Zeichen, die du ins
> Terminalprogramm eintippst, als echo zurück kommen.
>
> Wenn das nicht klappt, ist dein serieller Port (bzw USB Adapter) defekt.

Nope. Wenn ich RX und TX nicht "kurzschließe" also die Kontakte 
zusammenhalte und dann ins Terminal eine acht eingebe erscheint nur die 
ich eingegeben habe. Wenn ich die aber zusammen halte also das die 
Kontakte sich berühren. Dann kommt die acht noch mal wieder also so 88 
die erste acht habe ich eingeben und die zeit kommt durch Echo zurück
#4473363
Lesenswert?

Michael U. schrieb:
> #define UDR_Value = ((F_CPU  16  BAUD) - 1)
>
> hier wird zu Recht das = bemeckert.
>
> Nach entfernen compiliert es und sendet brav alle 2,5s eine 8.
>
> PS: ein 'H' konnte es nicht werden, Du sendest ja eine '8'...

"=" das hatte ich danach auch noch verbessert. Aber die acht kommt bei 
mir nicht an. Oder gibt es irgendwie was mit Treiber oder so?? Muss man 
dafür irgendwas installieren?
#4473371
Lesenswert?

Jan N. schrieb:
> Nope. Wenn ich RX und TX nicht "kurzschließe" also die Kontakte
> zusammenhalte und dann ins Terminal eine acht eingebe erscheint nur die
> ich eingegeben habe. Wenn ich die aber zusammen halte also das die
> Kontakte sich berühren. Dann kommt die acht noch mal wieder also so 88
> die erste acht habe ich eingeben und die zeit kommt durch Echo zurück

deine Ausführungen sind etwas wirr,
aber die erste 8 wird von deinem Terminlaprogramm ausgegeben,
die zweite 8 ist die Antwort die über die kurzgeschlossenen RX/TX zurück 
kommt.
#4473399
Lesenswert?

Hallo,

Jan N. schrieb:
> "=" das hatte ich danach auch noch verbessert. Aber die acht kommt bei
> mir nicht an. Oder gibt es irgendwie was mit Treiber oder so?? Muss man
> dafür irgendwas installieren?

kann ich jetzt nur mit "keine Ahnung" antworten. Bin zwar kein Freund 
der Profilic-USB-Chips, aber da der Echo-Test ja geht sollten die 
Treiber ok sein.

TX/RX und GND auch wirklich sauber zum AVR verbunden?

Ich habe Deinen Source direkt in der ArduinoIDE compiliert und auf einem 
Arduino Nano (der hat einen CH340 als USB-Chip drauf) geflasht und mit 
dem Serial-Monitor der IDE nachgeschaut.

Deine 8-ten kommen aber in TeraTerm auch gut an.

Gruß aus Berlin
Michael
#4473407
Lesenswert?

Walter S. schrieb:
> dann solltest du ein Adapter mit 5V besorgen

Ich habe diesen:
http://www.amazon.de/gp/product/B00R76SCJ6/ref=s9_simh_gw_p147_d0_i1?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=desktop-1&pf_rd_r=10XGF6CKFR5K79JK02AN&pf_rd_t=36701&pf_rd_p=585296347&pf_rd_i=desktop

Die Spannung am TXD Pin liegt bei 3,33 Volt. Die Spannungs am Roten 
Kabel liegt bei 5,02 Volt

Michael U. schrieb:
> TX/RX und GND auch wirklich sauber zum AVR verbunden?

Ich weis ja nicht ob das so richtig ist aber, RX heißt ja Receiving Data 
und TX ja Transmitting Data
Und wenn ich RX an RX am Atmega328p anschließe und TX an TX dann kommt 
nix an erst wenn ich RX an TX am Atmega328p also das rx Kabel an denn tx 
pin des Arduino dann kommt auch ein Signal an.
#4473414
Lesenswert?

Jan N. schrieb:
> Ich habe diesen:
> 
http://www.amazon.de/gp/product/B00R76SCJ6/ref=s9_simh_gw_p147_d0_i1?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=desktop-1&pf_rd_r=10XGF6CKFR5K79JK02AN&pf_rd_t=36701&pf_rd_p=585296347&pf_rd_i=desktop

der hat 5V, aber komisch dass du 3V misst

Jan N. schrieb:
> Und wenn ich RX an RX am Atmega328p anschließe und TX an TX dann kommt
> nix

das ist auch falsch, denn
der Sendeausgang TX muss an einen Empfangseingang RX
und umgekehrt
#4473429
Lesenswert?

Michael U. schrieb:
> Mir ging es auch eher um die GND-Verbindung.

Verstehe ich nicht. Gemessen habe ich Schwarze Messnadel an Schwarzes 
Kabel und Rote Messspitze an Grünes Kabel.

Walter S. schrieb:
> 
http://www.amazon.de/gp/product/B00R76SCJ6/ref=s9_simh_gw_p147_d0_i1?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=desktop-1&pf_rd_r=10XGF6CKFR5K79JK02AN&pf_rd_t=36701&pf_rd_p=585296347&pf_rd_i=desktop
>
> der hat 5V, aber komisch dass du 3V misst
>
> Jan N. schrieb:
>> Und wenn ich RX an RX am Atmega328p anschließe und TX an TX dann kommt
>> nix
>
> das ist auch falsch, denn
> der Sendeausgang TX muss an einen Empfangseingang RX
> und umgekehrt

Ich messe 5 Volt an dem Roten Kabel(Vcc) und 3,33 Volt an dem Grünen 
Kabel(TXD)
Das ich denn RX(Weiß) anschluß an denn TX Pin des Atmega anschließen 
muss, wahr mir spätenes klar wo ich selber mal im Kopf die schaltung 
durchgangen bin. Transmitter an Transmitter Pin ergibt kein Sinn 
Transmitter PIn an Empfänger ergab schon mehr sinn.
#4473436
Lesenswert?

Hallo,

die 3V am TX des Profilic sind nicht ungewöhnlich, die CP2102 mache auch 
nur 3,3V TX-Pegel und laufen an 3,3V und 5V Sytemen ohne Probleme.

Ich habe gerade mal ins Datenblatt des PL2303HX geschaut: RXD scheint 
NICHT 5V-tolerant zu sein. Bau mal einen Spannungsteiler an TX des 
Mega328.
1:2 sollte passen, also 1k längs und 2,2k gegen GND und den TXD des 
Profilic an die Verbindung der Widerstände.

Wäre zumindest eine Erklärung.

Gruß aus Berlin
Michael
#4473448
Lesenswert?

Hallo,

oh man, ein paar Grundlagen sollte man sich schon aneignen und 
Spannungsteiler gehören wie das Ohmsche Gesetz sicher dazu...

Wenn Du 2 Widerstände in Deinen Vorräten findest, die ca. im Verhältnis 
1:2 sind, also 1k/2,2k oder 2,2k/4,7k oder... (maximal 10/20k, wird 
sonst zu hochohmig): beide in Reihe schalten. Den mit dem kleineren Wert 
an den TX-Pin des AVR, den anderen an GND. RX vom USB-Adapter an die 
Verbindung der beiden Widrstände und mal testen, ob es hilft.

Gruß aus Berlin
Michael
#4473454
Lesenswert?

Michael U. schrieb:
> oh man, ein paar Grundlagen sollte man sich schon aneignen und
> Spannungsteiler gehören wie das Ohmsche Gesetz sicher dazu...
>
> Wenn Du 2 Widerstände in Deinen Vorräten findest, die ca. im Verhältnis
> 1:2 sind, also 1k/2,2k oder 2,2k/4,7k oder... (maximal 10/20k, wird
> sonst zu hochohmig): beide in Reihe schalten. Den mit dem kleineren Wert
> an den TX-Pin des AVR, den anderen an GND. RX vom USB-Adapter an die
> Verbindung der beiden Widrstände und mal testen, ob es hilft.
>
> Gruß aus Berlin
> Michael

Wäre das so richtig wie in der Zeichung?

Falls ja werde ich es mal morgen ausprobieren.

Tom schrieb:
> Und ob die notwendig sind.

Werde mal morgen welche dran hängen
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #4473464
Lesenswert?

Jan N. schrieb:
> Tom schrieb:
>> Und ob die notwendig sind.
> Werde mal morgen welche dran hängen
Tom meint übrigens von Vcc zum nächsten GND Pin und vom AVcc auf 
kürzestem Weg zum AGND. Dein Stichwort für die Google-Suche ist 
"Blockkondensator".

Und sieh dir auch den Spannungsteiler nochmal an. Der stimmt noch nicht. 
Du hast da jetzt einen Kurzschluss zwischen RX und GND...
#4473471
Lesenswert?

Lothar M. schrieb:
> Du hast da jetzt einen Kurzschluss zwischen RX und GND

Da das sehe ich auch grade.

"Den mit dem kleineren Wert
an den TX-Pin des AVR, den anderen an GND. RX vom USB-Adapter an die
Verbindung der beiden Widrstände und mal testen, ob es hilft."

Also mit dem 1K Ohm widerstand an denn TX Pin des Atmegas und der 2,2 k 
Ohm geht an GND. Aber wo muss jetzt der RX Anschluss ran? Zwischen die 
beiden Widerstände?
#4473699
Lesenswert?

Hallo,

Walter S. schrieb:
> Michael U. schrieb:
>> Ich habe gerade mal ins Datenblatt des PL2303HX geschaut: RXD scheint
>> NICHT 5V-tolerant zu sein.
>
> aber der verwendete Adapter ist als TTL kompatibel angegeben

Ich traue ja nur dem Frieden nicht und habe nicht geahnt, daß der Wunsch 
mit dem Spannungsteiler solche Probleme aufwirft.
Man hätte eben in 5 Minuten diesen Punkt ausschliessen können, wenn es 
sich mit genauso verhält.

Ich habe zwar irgendwo noch einen Profilic-Adapter, der hat aber einen 
älteren Chip und keine Win7 Treiber.

Gruß aus Berlin
Michael
Gast #4473970
Lesenswert?

Ich sag mal so:

Du hast einen Adapter, der nur 3,3V veträgt mit einem µC verbunden, der 
5V hat. Es liegt also an Dir.

Dass der USB/seriell Adapter noch funktioniert, hast du bereits 
festgestellt.

Nächster Schritt ist, ihn mit Pegelwandler korrekt einzusetzen oder 
durch einen anderen zu ersetzen, der für 5V vorgesehen ist.

Und dann wird deine Anwendung warscheinlich auch funktionieren.
#4473979
Lesenswert?

Stefan U. schrieb:
> Ich sag mal so:
>
> Du hast einen Adapter, der nur 3,3V veträgt mit einem µC verbunden, der
> 5V hat. Es liegt also an Dir.
>
> Dass der USB/seriell Adapter noch funktioniert, hast du bereits
> festgestellt.
>
> Nächster Schritt ist, ihn mit Pegelwandler korrekt einzusetzen oder
> durch einen anderen zu ersetzen, der für 5V vorgesehen ist.
>
> Und dann wird deine Anwendung warscheinlich auch funktionieren.

Jo danke dir. Werde heute mal im Elektronik Shop mit einen anderen 
Kaufen der auch 5 Volt Kompatibel ist. Und nicht nochmal so ein scheiß 
aus dem Internet. Sorry für das Wort. Aber wenn dort steht "5 Volt" dann 
gehe ich auch davon das er 5 Volt hat. Ich werde dieses Produkt 
zurückschicken. Und mir wie gesagt im Elektro Shop ein anderes Kaufen

Mfg jan.
Gast #4474100
Lesenswert?

Ich benutze seit Jahren so ein Kabel an 5V Mikrocontroller, indem ich 
einfach Widerstände in Reihe schalte. So habe ich vollen Schutz gegen 
Verpolung.

[code]

Prolific Kabel                     AVR
                  2,2k
RxD o-------------[===]-------------o TxD

                  2,2k
TxD o-------------[===]-------------o Rxd

                  100 Ohm
GND o-------------[===]-------------o GND
[code]

Die Widerstände dienen zugleich als Stecker für das Steckbrett: 
http://stefanfrings.de/avr_hello_world/DSCF0440.JPG
#4474198
Lesenswert?

Stefan U. schrieb:
> code]
>
> Prolific Kabel                     AVR
>                   2,2k
> RxD o-------------[===]-------------o TxD
>
>                   2,2k
> TxD o-------------[===]-------------o Rxd
>
>                   100 Ohm
> GND o-------------[===]-------------o GND
> [code]
>
> Die Widerstände dienen zugleich als Stecker für das Steckbrett:
> http://stefanfrings.de/avr_hello_world/DSCF0440.JPG

Wenn ich das so mache an RXD 2,2 k und dann an TX Pin des Avr 
controllers und 100 Ohm an GND mache. Also 2,2 k Ohm in die Buchse des 
RXD Kabel und dann mit dem Widerstand an TX Pin und 100 Ohm in die GND 
Buchse des Apdaters und dann in die - Leitung dann passiert garnix mehr 
die LED blinkt zwar. Aber in HTerm kommen  keine Daten mehr an. Wenn ich 
die 100 Ohm weg machen dann kommen wieder diese komischen Zeichen an
#4474280
Lesenswert?

Könnte es auch was mit dem Avrdude Programmer zutun haben?

Denn ich nutze ja ein 16 Mhz Quarz. Wenn ich im Code 8 mhz einstelle und 
auch ein 8 mhz quarz dran hänge kommt nur "avrdude: avrdude 
stk500_getsync() not in sync resp=0x00". So bald wieder ein 16 mhz quarz 
dran kommt, kommt dieser fehler nicht mehr.

Ich habe auch keine Ahnung wie ich diese Fuses beim Avrdude Programmer 
ändern kann.
Diese Command wird ausgeführt:

-u -v -patmega328p -carduino -PCOM6 -b115200 
-Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i -C"C:\Program Files 
(x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
#4474286
Lesenswert?

Hallo,

was ich im Moment nicht verstehe: Du scheinst doch die Arduion-Umgebung 
zu benutzen. Du hast also den Arduino-Bootloader auf Deinem Mega328?
Du flashst mit dem Profilic-USB-Adapter?

Ich hatte bisher noch keinen Grund, mir die Aufrufe des AVRdude genauer 
anzusehen, darum kümmert sich die IDE doch recht gut alleine, wenn man 
von dort flasht.

Gruß aus Berlin
Michael
#4474366
Lesenswert?

Michael U. schrieb:
> Hallo,
>
> was ich im Moment nicht verstehe: Du scheinst doch die Arduion-Umgebung
> zu benutzen. Du hast also den Arduino-Bootloader auf Deinem Mega328?
> Du flashst mit dem Profilic-USB-Adapter?
>
> Ich hatte bisher noch keinen Grund, mir die Aufrufe des AVRdude genauer
> anzusehen, darum kümmert sich die IDE doch recht gut alleine, wenn man
> von dort flasht.
>
> Gruß aus Berlin
> Michael

Ich erkläre es mal:
- Ich habe mir damals ein Arduino UNO gekauft mit Atmega328P drauf.
- Dann bin ich ca. nach 2 Monaten von der Arduino IDE weg und zum Atmel 
Studio gegangen da ich schon ein paar C Vorkenntnisse hatte.
- Programmieren tute ich über das Arduino UNO board.
- Zum Empfangen des TX Signal nutze ich ein Apdater.

Kann es sein das es am Bootloader oder so liegt?
#4474556
Lesenswert?

Hallo,

kopiere doch einfach mal Deinen C-Code von oben in die Arduino-IDE in 
einen leeren Sketch. Natürlich alles löschen, was die IDE da 
reinschreibt (setup() und loop() usw.).

Dann einfach compilieren und testen.
Die IDE macht dann auch nichts anderes als das Atmel-Studio. Sie 
compiliert es mit dem GGC und flasht es.

Ich nehme an, Du hast einen UNO mit gesockeltem Mega. Dann steck den 
eben auf Deinen Aufbau und teste.

Ich habe im Moment keine Ahnung, wer da quer schießt.

Gruß aus Berlin
Michael
#4474647
Lesenswert?

Michael U. schrieb:
> kopiere doch einfach mal Deinen C-Code von oben in die Arduino-IDE in
> einen leeren Sketch. Natürlich alles löschen, was die IDE da
> reinschreibt (setup() und loop() usw.).
>
> Dann einfach compilieren und testen.
> Die IDE macht dann auch nichts anderes als das Atmel-Studio. Sie
> compiliert es mit dem GGC und flasht es.
>
> Ich nehme an, Du hast einen UNO mit gesockeltem Mega. Dann steck den
> eben auf Deinen Aufbau und teste.
>
> Ich habe im Moment keine Ahnung, wer da quer schießt.
>
> Gruß aus Berlin
> Michael

Danke für denn Tipp.
Langsam wird es komisch.
Also der Fehler muss im Code liegen. Da wenn ich diesen Code in die 
Arduino IDE eingebe. Kommt genau das gleiche raus wenn ich es in Atmel 
Studio programmiere.(Der Mega steht im Sockel des Arduino ohne 
Breadboard)

Wenn ich aber mit Serial.begin(9600);
und Serial.println("H"); mache kommt dieses problemlos an.
#4474670
Lesenswert?

ES funktioniert!!!!!!!!

Ich habe mir nochmal das Tutorial "Der UART" durchgelessen und habe denn 
"Double Transmission Speed" aktiviert mit
1
if(USE_2X) {
2
    UCSR0A |= (1<<U2X0);
3
}else{
4
    UCSR0A &= ~(1<<U2X0);
5
}

Und noch die util/setbaud.h Datei includieren

Und nun funktioniert es endlich sogar mit dem Apdater ohne Problem. 4 
Gott verdammt Tage damit verbraucht und dabei wahr der Fehler scheinbar 
so einfach.
Naja wieder was neues gelernt.

Ich danke euch für die Tatkräftige Unterstützung!!!

Mfg jan.
#4474692
Lesenswert?

Hallo,

erstmal schön, daß es geht.
Eigentlich müßte man dieses Rätsel jetzt lösen...
Ich habe definitiv Deinen Code in die IDE kopiert (nur das '=' 
entfernt), compiliert und geflasht.

Es kann mit dem Bootloader zusämmenhängen, normalerweise ist U2X0 nach 
Reset
auf 0, also kein X2, ist bei 9600Baud eigentlich auch nicht nötig.
Er kann also eigentlich nur aus dem Bootloader mit gesetztem X2 
gestartet haben. Das ergünde ich aber nicht...
Eigentlich hättest Du die Daten dann mit 19200 richtig empfangen müssen.

Warum das bei Dir passiert ist und bei mir nicht, ist etwas unklar. Mein 
Bootloader ist der vom Auslieferzustand des Arduino Nano aus China, ich 
hatte bisher keinen Grund, da was zu ändern. Es läuft für mich ja.

Gruß aus Berlin
Michael
#4474707
Lesenswert?

Michael U. schrieb:
> Hallo,
>
> erstmal schön, daß es geht.
> Eigentlich müßte man dieses Rätsel jetzt lösen...
> Ich habe definitiv Deinen Code in die IDE kopiert (nur das '='
> entfernt), compiliert und geflasht.
>
> Es kann mit dem Bootloader zusämmenhängen, normalerweise ist U2X0 nach
> Reset
> auf 0, also kein X2, ist bei 9600Baud eigentlich auch nicht nötig.
> Er kann also eigentlich nur aus dem Bootloader mit gesetztem X2
> gestartet haben. Das ergünde ich aber nicht...
> Eigentlich hättest Du die Daten dann mit 19200 richtig empfangen müssen.
>
> Warum das bei Dir passiert ist und bei mir nicht, ist etwas unklar. Mein
> Bootloader ist der vom Auslieferzustand des Arduino Nano aus China, ich
> hatte bisher keinen Grund, da was zu ändern. Es läuft für mich ja.
>
> Gruß aus Berlin
> Michael

Am Bootloader habe ich selber auch nix verändert. Das ist der Chip der 
beim UNO dabei kommt der hat ja bereits ein bootloader.
Du hast recht. Auf 19200 empfange ich auch die richtigen Daten ohne 
U2X0.
Keine Ahnung warum. Aber ob auf 19200 oder mit U2X0 und dann auf 9600 es 
funktioniert und darüber bin ich froh. :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren