Arduino Uno Seriell zu Parallel Umsetzer Problem

Gast #3294503
Lesenswert?

Hallo Forengemeinde,

Wahrscheinlich habe ich hier ein triviales Problem jedoch bekomme ich es 
nicht hin auf dem Arduino Board eine normale UART Kommunikation 
aufzubauen.

Ich nutze die UART library von Peter Fleury und will nur über die 
Standart befehle uart_putc()... Testweise einfache Zeichen verschicken.

Die Baudrate habe ich auf 9600 eingestellt und die Lib habe ich nur 
leicht überarbeitet da der ATMEGA328P fehlte.

#elif defined(_AVR_ATmega48_) ||defined(_AVR_ATmega88_) || 
defined(_AVR_ATmega168_) || defined (_AVR_ATmega328P_)
 #define ATMEGA_USART0
 #define UART0_RECEIVE_INTERRUPT   USART_RX_vect
 #define UART0_TRANSMIT_INTERRUPT  USART_UDRE_vect
 #define UART0_STATUS   UCSR0A
 #define UART0_CONTROL  UCSR0B
 #define UART0_DATA     UDR0
 #define UART0_UDRIE    UDRIE0

Oben sieht man den nachbearbeiteten Bereich. Ich hatte diese Lib auch 
schon in anderen Projekten im Einsatz hatte hier noch nie Probleme 
jedoch habe ich hier wie auf dem Arduino Uno üblich zum ersten mal einen 
ATMega16U2 als SerialtoUSB Umsetzer im Einsatz.

Nun stellt sich mir die Frage wieso ich hier keine sinnvolle 
Kommunikation zustande bekomme wenn ich z.B. T + E + S + T + 0x13 + 0x10 
als einzelne Chars übertrage bekomme ich in HTerm z.B. 0x92 0xB2 0x90 
0x51 0xFC vom Controller geschickt jetzt geh ich mal davon aus, dass der 
atmega16u2 die Daten nicht so umsetzt wie ich das vermute bzw. wie ich 
es von einem FT232 gewohnt bin.

Ich hoffe Ihr könnt mir hier einen kleinen Tipp geben.
Gast #3294513
Lesenswert?

Haben die Arduinos nicht eine eigene serielle Schnittstelle?

Ein Codefragment mit:
Serial.Begin (9600);
ist irgendwie bei mir hängen geblieben.

Schau doch mal in die Dokumentation - was selten schadet.
(Firma: augilabs) #3294519
Lesenswert?

Hi

schau mal in meine Anfrage, da ist eine serielle Ausgabe mit drin. 
Arduino StandardLibrary. Da brauchst du die Fleury nicht.

...
// Open serial communications and wait for port to open:
  Serial.begin(9600);
...

....
 Serial.println("Beispiel...");
....

Gruß
Achim
Gast #3294530
Lesenswert?

Ja das stimmt schon jedoch nutze ich das ATMEL Studio 6 und programmiere 
mit dem MKII das Board.
Daher habe ich jetzt direkt auf die IDE keinen Zugriff und das möchte 
ich eigentlich auch nicht unbedingt da ich mir denke es muss doch auch 
so gehen.
Gast #3294585
Lesenswert?

Wenn Du mit dem MKII programmierst, hast Du wahrscheinlich den 
Boot-Loader rausgeschmissen.

Übrigens: Es gibt verschiedene Arduinos. Manche haben noch 'ne echte 
serielle Schnittstelle, manche benutzen einen zweiten Prozessor auf dem 
Board und wieder andere nutzen die "eingebaute" Schnittstelle des 
Prozessors.

Der UNO arbeitet, soweit ich weiß, mit einem zweiten Prozessor für die 
USB-Kommunikation. Der sollte sich wie ein FTDI-Chip verhalten - also 
08/15 serielles I/O und weiter nix.
Gast #3294621
Lesenswert?

Ja der Bootloader ist drausen und beim Prozessor habe ich auch gemeint 
der sollte 1 zu 1 wie der FTDI funktionieren jedoch sieht dies nicht so 
aus. Zumindest werden meine Daten nicht direkt so Übertragen.
Soweit ich mittlerweile gesehen habe nutzt der Controller die LUFA lib 
hatte jedoch mit dieser auch noch keinen direkten kontakt.
Naja mal schauen aber schon mal danke für die zahlreichen Antworten.
Gast #3294630
Lesenswert?

Bist Du sicher, dass sich bei Dir kein Fehler eingeschlichen hat?

Ich habe das Teil zwar noch nicht auf untersten Ebene beackert, aber 
wenn ich mir das Schaltbild so anschaue, so gibt es nur zwei 
Verbindungen zwischen den beiden Prozessoren - rein zufällig RXD(D0) und 
TXD(D1) des ATMega328 - sonst nichts.

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