Forum: Mikrocontroller und Digitale Elektronik Mega32 und Uart


von Andy (Gast)


Lesenswert?

Hallo zusammen,

ich versuche gerade von einem Mega32 Daten an den PC zu schicken.
Ich habe ein USB zu Seriel Konverter.
Den 32er betreibe ich mit 16MHz.
TXD habe ich auf Pin3(RXD) und GND auf Pin7 vom Konverter.
Wenn ich per Terminal versuche Daten zu empfangen öffnet zwar der COM 
Port aber es kommt nichts an.
Könnte mir jemand helfen ob es ein Verdrahtungsfehler ist oder Software.

Baudrate 9600

void uartPutChar(char data)
{
   while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}

//Init
UBRRH = 207;//(unsigned char)(BAUD>>8);
UBRRL = 103;//(unsigned char)BAUD;
UCSRB = (1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

Gruß
Andy

von Zac Hobson (Gast)


Lesenswert?

Ich wuerd sagen der Baudratenteiler ist falsch. Schau doch mal mit dem 
Oszilloskop wie lange ein Bit tatsaechlich ist.

von Andy (Gast)


Lesenswert?

Oszi hab ich leider grad nicht da.
Die Teiler hab ich aus einer Tabelle.

von C-Fragensteller (Gast)


Lesenswert?

Andy schrieb:
> TXD habe ich auf Pin3(RXD) und GND auf Pin7 vom Konverter.
Welcher Konverter?

von Andy (Gast)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

>UBRRH = 207;//(unsigned char)(BAUD>>8);
>UBRRL = 103;//(unsigned char)BAUD;

Das wäre 0xCF6B. Der richtige Wert ist 0x00CF. Du solltest deinen 
Compiler rechnen lassen.

MfG Spess

von Andy (Gast)


Lesenswert?

UBRRL=(uint8_t)(F_CPU/(BAUD*16L))-1;   // Baudrate festlegen
UBRRH=(uint8_t)((F_CPU/(BAUD*16L))-1)>>8;

wäre das so richtig, wenn ja funktionierts au net.

von holger (Gast)


Lesenswert?

>TXD habe ich auf Pin3(RXD)

Und am ATmega ist hoffentlich ein MAX232 dazwischen.

> und GND auf Pin7 vom Konverter.

GND ist Pin5.

von C-Fragensteller (Gast)


Lesenswert?

Dann fehlt dir aber der "Konverter" von CMOS Logik nach RS232. Das mag 
zwar manchmal funktionieren, die feine Englische Art ist es aber nicht. 
Insofern wirst du noch einen entsprechenden Baustein aus der MAX2xx 
Famile brauchen.

von Andy (Gast)


Lesenswert?

Brauch ich einen MAX232 wenn ich ein Konverter hab?

von holger (Gast)


Lesenswert?

>Brauch ich einen MAX232 wenn ich ein Konverter hab?

Bei deinem ja.

von Andy (Gast)


Lesenswert?

Verdammt bin in der Spalte verrutscht

http://de.wikipedia.org/wiki/RS-232

hab die Pins vom 25pol genommen.

von Andy (Gast)


Lesenswert?

Ok danke werd einen dazwischen machen Danke.

von Andy (Gast)


Lesenswert?

Hab jetzt einen MAX232 dazwischen geschaltet, aber immer noch nichts.

von C-Fragensteller (Gast)


Lesenswert?

Andy schrieb:
> Hab jetzt einen MAX232 dazwischen geschaltet, aber immer noch nichts.
Dann hast du etwas falsch gemacht ;). Hier 
(https://www.mikrocontroller.net/articles/AVR-Tutorial:_UART) findest du 
einen Beschaltungsplan. Im Übrigen kannst du das Kapitel ruhig einmal 
durchgehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.