PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 es kommt nur mist



kalletronic
18.05.2007, 12:08
Hi Leute, jetz hab ich endlich die ganzen Bauteile bekommen, und wollte gleich loslegen. Das programmieren des mega8 klappt wunderbar und dann wollte ich die Kommunikation mit dem PC vesuchen. Ich hab folgendes Programm versucht:



$regfile = "m8def.dat" 'Die Anweisung bestimmt Controllertyp, hier AVR Mega 32
$crystal = 4000000
$baud = 9600

Dim I As Byte

Const Esc = 27

Do
I = Inkey()
If I <> 0 Then Print Chr(i) ; "";
If I = Esc Then Exit Do

Loop

Print "Esc gekommen"

End



doch im Terminal von bascom kommt nur mist an.

€€þÿ¼ò€àòÀî¿jM~@ôxñßÿø tüþþ|~ÿø*þôêTTUÕUUUUÇøøüøÐ`

mit der Takfrequenz und der Baudrate hab ich auch schon herumgespielt, "Flusskontrolle" auf "keine" gesetzt, hat aber alles nichts gebracht.

Wenn ich das Programm richtig verstanden hab, dürfte der Kontroller doch nur was ausgeben wenn ich einZeichen an Ihn schicke, aber Er sendet ständig irgenwelche Zeichen.

Hat jemand von euch ne Idee was der Fehler sein könnte??

Danke für die Hilfe, gruß Kalle

Jon
18.05.2007, 12:30
Bei mir funktioniert es nur mit 1MHz und 2400Baud. Probiere das mal aus.
Beim ersten Experiment mit RS232 ist es ganz praktisch, wenn man erstmal das Input weglässt und nur einen Text jede Sekunde sendet.
Bei mir hatte ich anfangs das Problem, dass der µC nichts empfangen hat und dann kam auch logischer weise nichts zurück. Hat mich etwas gewundet und ich hatte leinen Plan, wo der Fehler ist. Als ich dann nur einen Text gesendet habe funktionierte es auch. Also war klar, dass in der Richtung PC->µC etwas nicht funktioniert. Es funktioniert auch immer noch nicht *g*.

jon

jon

kalletronic
18.05.2007, 12:49
Hi, ich hab das grad mal probiert, aber immer noch das gleiche :-(
Kann es sein, da? es mit dem internen Oszillator nicht funzt??

Jon
18.05.2007, 12:54
Bei mir geht es mit dem internen 1MHz Oszi.

jon

kalletronic
18.05.2007, 13:09
muß ich da bei den Fuses sonst noch was umstellen außer dem Oszillator?

Jon
18.05.2007, 13:11
Eigentlich nicht.
Wo hast du die Baud-Rate eingestellt? Nur in BASCOM oder auch im Gerätemanager (wenn du Windof hast)?

jon

kalletronic
18.05.2007, 13:44
Jetzt hab ichs nochmal versucht, jetzt siehts schon etwas besser aus:

Im Terminal von Bascom springt der Cursor immer mit gleichen Zeitabständen eins weiter aber es werden keine zeichen ausgegeben.
In dem Programm HTerm wird immer abwechselnd 00 und FF bzw in ASCI \0 und y mit 2 punkten oben drauf angezeigt.

Ich hab das Programm auf Print "H" abgeändert ](*,)

PcVirus
18.05.2007, 14:51
Hast du eine Masseverbindung vom Kontroller zum Pc?

kalletronic
18.05.2007, 15:01
Jo, Verbindungen passen, hab ich etliche male durchgemessen

kalletronic
18.05.2007, 17:13
Keiner ne Idee was da sonst noch sein könnte?

raggy
18.05.2007, 18:21
Hallo kalletronic
Externe Quarz ist besser,interner unterligt größeren schwankungen durch Temperatur.
Falls es geht einen krummen Quarz nehmen zb.3686400 hz
zum anderen hast Du TX u.RX einmal gekreuzt
TX --->RX
RX---->TX
Gruß raggy

kolisson
19.05.2007, 15:52
haste denn einen pegelwandler für seriell eingebaut ?
atmel laufen ja auf 5 volt oder weniger.
pc seriell schnittstellen auf +-15volt oder so.

gruss

Jon
19.05.2007, 16:06
pc seriell schnittstellen auf +-15volt oder so.
Sind +-12 Volt.

jon

kalletronic
21.05.2007, 06:55
ja, hab nen MAX232 drinne

raggy
21.05.2007, 16:15
Hallo
Wenn es eine selbst gebaute Platine ist,hast du die richtigen Elkos drin,Datenblatt des RS232_IC nachsehen.
Zum anderen muß Du ein Null-Modemkabel Nehmen.(TX und RX sind bei dem Kabel gekreuzt)
Gruß raggy

xunwichtig
22.05.2007, 05:28
Man braucht nicht unbedingt eien MAX232, um mit einem AVR einen PC zu kontaktieren. Die 5V TTL Signale reichen meist aus, um dem UART im PC zu sagen, das ein HIGH vorhanden ist, un die 0V für ein Low.

Worauf es eher ankommt, ist die Taktfrequenz, und die Geschwindigkeit, mit der diese Daten übertragen werden.

die Serielle Kommunikation ist nicht beiderseitig durch einen Takt geregelt, der dem Anderen Partner mitteilt, das jetzt neue Daten vorliegen, und diese jezt abgefragt werden. Bei der Seriellen Kommunikation mit dem RS232-Protokoll werden 2 Geräte verwendet, welche selbst einen erzeugten Takt nutzen, um zu kommunizieren.

Damit nun die Daten "Syncron" zur anderen gegenstelle übermittelt werden können, müssen beide Partner in der selben geschwindigkeit miteinander kommunizieren.
Damit man dies erreichen kan, braucht man beim AVR einen Takt, der dem der Baud-Rate entspricht.

Wenn man eien 4MHZ oder 8MHz quarz verwendet, dann liegt man nicht genau auf diesem Takt. (PC arbeitet mit z.B. 1000Bits/s, und avr mit 800Bits/s) Dadurch hat man ein ungleiches verhltniss, und es kann passieren, das einer der beiden einfach Bits verschluckt.

Hier mal eine kleine Rechnung dazu:
Bei einem Takt von 11,059200MHz und einer Baud-Rate von 9600, erhält man 11059200 / 9600 = 18432 Zyklen. Das Heist, alle 18432µS kommt ein neues Bit an.

Nuzt man nun 10.000.000 MHz, dann erhält man alle 1041,66666~ µS ein neues Bit

Da ein µC aber keine Komma-Takte beherscht :D, ist es verständlich, wenn mal ein paar Bits beid er übertragung verschwinden. Darum sollte man einen Quaz bevorzugen, der in das Baud-Raster fällt.

Möchte man z.B. mit 9600Baud kommunizieren, und einen Quaz verwenden, der bei ca. 4MHz liegt, dann kann man das recht simpel ausrechnen: 4000000 / 9600 = 416,6666~ ... 9600 * 416 = 3993600 -> 3.993.600 Hz wären angebracht, als Takt zu nutzen. Da es jedoch solch einen Quarz nicht geben wird, kann man sich mit einem der Alternativen begrügen, die er reichlich zu kaufen gibt.

Man könnte es auch so ausrechnen: 11059200 bei 9600 Baud. Bei 9600 mit ca. 22MHz wären das 11059200 * 2 = 22118400MHz ;)

=Nachtrag=
In BascomAVR läst sich diese Fehlkonfiguration auch anhand des Status-Berichts einsehen: BascomAVR-Menü -> Edit -> Show Results -> Unter BAUD Error. Dort findet man die Abweichung der Baudrate zum Takt hin in % ... (100% entspricht dabei keiner Abweichung)


JimJim
XUN

kalletronic
22.05.2007, 07:29
hi, danke für die Antworten, dann werd ichs mal mit nem externen quarz versuchen!!

Jaecko
22.05.2007, 07:40
Stimmt die im Programm angegebene Frequenz (4MHz) mit der im internen Oszi eingestellten überein?
Hab ich auch schon mal übersehen, mit dem Resultat, dass 8 MHz geplant waren, die Fusebits aber "vergessen" wurden... Programm lief halt dann nur mit 1/8 der Geschwindigkeit...

Jon
22.05.2007, 07:46
Bei manche ATMEL Controllern kann man eine Taktteilung einstellen. Jetzt weiß ich nicht, ob das beim ATMega8 möglich ist. Schau aber trotzdem mal nach, ob du etwas in dieser Art eingestellt hast.

jon

kalletronic
29.05.2007, 09:51
Hi Leute, gestern hab ich das ganze mal mit nem Quarz mit 14,irgendwas versucht. Ich hab die fuses umgestellt auf externen RC Oszillator und dann ging garnix mehr, jetzt kann ich ihn nicht mal mehr programmieren, kommt wieder die typische Could not identifi... Fehlermeldung. Was kann ichn da jetzt tun????????????????????

kolisson
29.05.2007, 10:04
wenn du auf externen rc einstellst, muss auch ein externer rc dran sein und kein quarz. also einfach mal ins datenblatt schauen und nen externen rc anbauen statt des quarzes. dann kannste auch wieder die fuse richtig stellen. alternativ kannste auch nen externen takt an den pin xtal1 legen (also ein rechtecksignal .. ab einigen 100khz - z.b. aus nem signalgenerator) um das ding wiederzubeleben.

gruss

kalletronic
29.05.2007, 10:15
@ kolisson, danke für die Antwort, dann werd ich ihn gleich mal versuchen wiederzubeleben, wenn ich zeit hab. Da hab ich im datenblatt wohl was falsch verstanden bezüglich Quarz und RC Oszillator, wie muß ich den die Fuses dann richtig einstellen für nen Quarz?

kolisson
29.05.2007, 11:54
ist ja schade, dass ich hier für dich das datenblatt lesen muss.... aber in anlage ein auszug aus selbigem. die genauen einstellungen variieren natürlich von anwendung zu anwendung etwas. ich denke jedoch, dass du mit den (durch pfeil) markierten einstellungen schon zurecht kommen solltest.

gruss kolisson

kalletronic
29.05.2007, 12:09
Hi kolisson, danke!
P.S. is ja nich so, daß ich das Datenblatt nich gelesen habe, nur hab ichs falsch verstanden.

kolisson
29.05.2007, 14:01
na dann oki...
war ja auch nur so ne bemerkung ohne zu meckern !