PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 Problem - Nur wirre Zeichen



YaNnIk
20.08.2009, 15:33
Hi Leute..

Ich habe ein Problem mit den Senden von Daten an den PC..

Ich habe mit RS232 Kabel selber gelte.. RX/TX an Pin 2/3 des RS232 Steckers und GND an Pin 5.

Unten auf dem Schalplan knnt ihr meine Beschaltung auf dem Board erkennen..

Dann ahbe cih folgendes Programm in den IC bertragen :



$regfile = "m16def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

Config Portc = Output

Do

Portc.0 = 1

Print " Hallo "
Print " Test "
Wait 2

Loop

End


Dann ahbe ich das Board ber das Kabel mit dem IC verbunden..

Dann habe ich i nBascom alle Einstellungen gemacht und das Terminal geffnet..

Aber dort kommen nur wirre Zeichen
Hier mal ein Beispiel :




H H
H
H
H H H H H H H
H H H H H H H H H
H



Wenn ich den Stecker umdrehe kommen garkeine Zeichen mehr..

Was hab ich falsch gemacht??

Hoffentlich kann mir da einer weiter helfen!

Danke im Vorraus!

Mfg Yannik

sast
20.08.2009, 15:44
Um Hardwarefehler auszuschlieen, kann man immer an den PINs zum ATMega (RX,TX) eine Brcke machen. Der ATMega sollte dabei aber nicht an diesen Leitungen angeschlossen sein. Im Terminalprogramm was schreiben und Echo empfangen. Wenn das geht muss man normalerweise in der Software weitermachen. Nach Mglichkeit nicht ununterbrochen schreiben, sonder vielleicht am Anfang nur einmal. Wenn dann nur so viele Zeichen kommen wie du losgeschickt hast, dann knnte es noch an falsch eingestellten Fusres liegen, oder dass der Takt nicht stimmt (zB. keiner/falscher Quarz bei externer Taktquelle.
Da ja irgendwas kommt, schliee ich mal auf eine Softwaresache, auer die Zeichen kommen auch, wenn der Controller nicht drin steckt. :-k

VCC und Masse hast du aber schon am MAX232? (Bein15 und 16)

sast

BurningWave
20.08.2009, 17:14
Was fr ein Termianl benutzt du? Hast du dort auch alles richtig eingestellt?

mfg

YaNnIk
20.08.2009, 17:56
Um Hardwarefehler auszuschlieen, kann man immer an den PINs zum ATMega (RX,TX) eine Brcke machen. Der ATMega sollte dabei aber nicht an diesen Leitungen angeschlossen sein. Im Terminalprogramm was schreiben und Echo empfangen.

Ich habe mal direkt am RS232 Stecker gebrckt und dann bekomme ich die richtigen Signale als Echo! D.h., dass das Kabel zumindest richtig ist..


knnte es noch an falsch eingestellten Fusres liegen,

Muss ich an den Fusen den irgendwas ndern und per RS232 zu senden/empfangen??

Ich ahbe nur CKSEL0...3in Ponyprog weggeklickt, sodass ich einen externen Quarz benutze.. Das stimmt auch alles, den bei einem LED Blink Programm stimmen die Zeiten genau!



VCC und Masse hast du aber schon am MAX232? (Bein15 und 16)


Ohh Hehehe ^^ Das wird wohl sein ^^ Das war im Schaltplan nicht und deshalb hab ich das vergessen ^^

EDIT : So jetzt funktioniert es schonmal ein bisschen ^^

Man kann Anstze der Wrter erkennen ^^


…!.!сTs H l
Test
j
!Tt
Hall


Aber das ist noch nicht wirklich das gelbe vom Ei ^^
](*,) ](*,)

Was knnte es den noch sein??

Es ist schon interessant, was der IC oder mein PC da so hinknallt ^^

Und auch noch erwehnenwrdig ist, dass jedes mal was anderes rauskommt ^^

Neutro
20.08.2009, 18:18
Mir sieht es ganz danach aus als wenn die langsamen 9600 Baud zu langsam sind fr den 16MHz Quarz. Versuche mal hhere Baudraten beim 16MHz Quarz oder nimm einen 4MHZ Quarz bei 9600 Baud, dann solltetst du richtigen Empfang haben.

BurningWave
20.08.2009, 18:30
Sende mal verschiedene Binrcodes und schaue, ob es irgendwelche regelmigkeiten gibt (also, ob z.B. das was du gesendet hast nur um eine Stelle nach rechts verschoben ist oder, oder ob immer ein Bit gesetzt ist).

Bei mir ist es so: Wenn ich irgentwas mit Echo an meinen C sende kommt das selbe aber immer mit gesetztem Bit 8 zurck. Ich wei bis heute nicht woran das liegt.

Vielleicht stimmt auch der Teiler der Baudrate nicht. Setze ihn (das Register UBRRL) mal auf 105.

Richard
20.08.2009, 18:30
Moin moin.

Solche wirren Zeichen hatte ich am Anfang. Bei mir lag es daran
das der AVR von Haus aus mit den internen Quarz arbeitet.
Ich habe die Fuses einstellen mssen, danach klappte alles.
Mann konnte dort nicht nur auf extern stellen, sondern auch
verschiedene Frequenzen einstellen. Leider habe ich Win neu
aufsetzen mssen und die Programme noch nicht wieder installiert,
kann also nicht nachsehen was ich genau eingestellt habe. :-(

Gru Richard

Neutro
20.08.2009, 18:33
ja, mit dem Internen Quarz bekommt man auch nur wirre Zeichen. Ein Externer Quarz ist ein absolutes Muss

Besserwessi
20.08.2009, 20:25
Bei den lterne Chips wie Mega16 geht es meistens mit dem internen Takt, aber nicht immer.
Wenn man die Fuses nicht passend einstellt luft der intern Takt mit 1 MHz und dann stimmt die Baudrate ganz und gar nicht, weil BASCOM vom faschen hheren takt ausgeht. Dann htte man 9600/16 = 600 Baud.

YaNnIk
20.08.2009, 20:27
ja, mit dem Internen Quarz bekommt man auch nur wirre Zeichen. Ein Externer Quarz ist ein absolutes Muss

Ich benutzte einen 16 MHZ externen quarz..


Das mit der hhen baud werde ich mal ausprobieren!!

Also hhere baud werte haben teilweise garkeine zeichen angezeigt und teiweise den gleichen mll..

ich versteh das echt nicht.. warum funktioniert bei mir nix auf anhieb ^^

sast
21.08.2009, 09:27
Also von der Hardware Seite sieht es ja jetzt schon mal ganz gut aus.

Was mir auffllt, ist, dass du ja auch mal zwischendurch die richtigen Zeichen bekommst. Das sollte darauf hindeuten, dass die Baudrate erst mal von der Grenordnung ok ist. Vielleicht ist nur dein Baudratenfehler zu gro. Ich hatte mal anfnglich mit ATMega8 und internem Takt 8MHz experimentiert und da nie Probleme mit 9600 Baud. Vielleicht solltest du mal nur zum Test auf internen Takt zurckschalten und erst mal die Terminalverbindung testen. Schn wre natrlich ein Signal auf dem Oszi da kannst du genau sehen ob das Timing passt.
Ganz am Anfang kannst du aber auch mal mit den Baudraten im Terminal spielen und dadurch dem Hinweis von Besserwessi nachgehen (600Baud).

Mit der baudrate nach oben gehen macht erst Sinn wenn die langsamen funktionieren, auer es wird dadurch der Baudratenfehler minimiert.

Und zu den Fuses gibts mal wieder den Tipp, sich mal http://www.engbedded.com/fusecalc/
anzusehen. Da lsst sich wunderbar mit rumspielen.

sast

pacer_one
21.08.2009, 12:22
Hi,
um das Baudratenregister nicht von Hand selbst setzen zu mssen, steht in meinem Code folgendes drin:

.equ F_CPU = 7372800 ; Systemtakt in Hz
.equ BAUD = 9600 ; Baudrate

; Berechnungen
.equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; clever runden
.equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; Reale Baudrate

heit, ich gebe nur die Baudrate vor, und das Baudratenregister wird automatisch aktualisiert.
Das solltest du aber auch in Beschreibung vom Mega8 finden.

Weiterhin gibt es die Mglichkeit zu checken ob der Baudratenfehler zu gro ist.
schau doch mal hier nach:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

peterfido
21.08.2009, 14:02
ja, mit dem Internen Quarz bekommt man auch nur wirre Zeichen. Ein Externer Quarz ist ein absolutes Muss

Ich nutze bei vielen Projekten nur den internen Takt. Meist ohne Teiler auf 8 MHZ. Ich bekomme keinerlei Probleme bis 38400 Baud. Anders ist es natrlich, wenn ich den Atmega auf Standard 1MHZ lasse, dann laufen nur Baudraten bis 2400 stabil. Evtl passt was mit den Fuses nicht und der Takt steht immer noch auf 1 MHZ. Das lsst sich z.B. mit einer im Sekundentakt blinkenden LED kontrollieren.



do
toggle ledport
wait 1
loop
end

wo fr ledport natrlich der ausgang zur led eingesetzt werden muss.

YaNnIk
21.08.2009, 15:51
JAAAAAAA!! Es klappt!!

Und die Lsung ist so einfach wie Genial ^^ ](*,) ](*,)

Als ISP Progger benutze ich die SerCon (http://mikrokopter.de/ucwiki/SerCon_Anleitung?highlight=%28sercon%29|%28Kategor ieHomepage%29|%28KategorieNachbauten%29), die ich eh schon fr meinen Mikrokopter hatte.. Auf der Sercon ist ebenfalls ein MAX232 und es gibt direkt in der ISP Schnittstelle auch eine Leitung fr RX und TX direkt zum Atmega ohne, dass man am Atmega was beschalten muss ^^

Nun funktioniert es mit dem 16MHZ ext. Quarz und 9600 baud ^^

Und so muss ich auch nicht stndig das Kabel tauschen ^^ Jetzt geht alles ber das 10pol. Flachbandbandkabel zur Sercon ISP ^^

Anscheinent war bei mir doch i-was falsch oder der MAX232 ist i-wie defekt.. Naja.. egal ^^ jetzt gehts ja ^^

Nun ist halt der MAX232 Teil auf meiner Schaltung vllig berflssig ^^