PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Probleme mit UART und ATtiny2313



bnitram
10.07.2012, 18:17
Hallo Forum,
Ich wollte jetzt doch nochmal versuchen meine UART-Schnittstelle in Gang zu setzen allerdings will das nicht so wie ich will :(
Mein Chip ist ein ATtiny2313. UART Verbindung über MAX232 an RS232. System Win XP.
Das folgende Programm läuft nur zur hälfte:



$regfile = "attiny2313.dat"
$crystal = 1000000
$hwstack = 8
$swstack = 8
$framesize = 24
$baud = 4800


Dim Empfangen As String * 25
Config Portd.6 = Output


Do
Empfangen = ""
Input Empfangen


Select Case Empfangen
Case "1"
Portd.6 = 1
Print "ON"
Case "0"
Portd.6 = 0
Print "OFF"
Case Else
Print "unknown command"
End Select
Loop
End

Wenn ich dann im Terminal eine "1" schreibe und mit Enter bestätige schaltet sich das LED ein(so wie es sein soll!) aber ich bekomme über den Print-Befehl keine Rückmeldung(eig sollte dann ja "ON" erscheinen).
Genau so ist es bei den anderen Befehlen auch.
Auch andere Programme die mir etwas ausgeben sollen funktionieren nicht.
Woran könnte das liegen??

Mfg
bnitram

Torrentula
10.07.2012, 18:35
Ich weiß nicht ob man in Bascom jetzt Empfänger und Sender erst aktivieren muss, aber wenn du sagst, dass das senden bei anderen Programmen auch nicht funktioniert dann könnte es an deiner Hardware liegen.
Überprüfe doch mal ob du den TX pin vom µC korrekt an den RX pin des PCs / Adapters angeschlossen hast. Möglicherweise aber auch ganz einfach ein gebrochenes Kabel? --> mit dem Multimeter übeprüfen.

bnitram
10.07.2012, 18:45
Danke erstmal für deine schnelle Antwort.
Also als Terminal verwende ich auch nicht das mitgelieferte von Bascom AVR.
An dem MAX232 und der RS232 kann es nicht liegen. Wenn ich den Echo Test(RX und TX beim MAX232 zusammen halten) mache Empfange ich alles korrekt.

Mfg
bnitram

oberallgeier
10.07.2012, 18:47
$crystal = 1000000
...
$baud = 48001 MHz, vermutlich auch noch ohne Quarz - und dann 4k8 Bd, und laufen solls dann auch noch . . . . Schau mal nach der Abweichung der tatsächlichen Baudrate von Deinen 4k8.

bnitram
10.07.2012, 18:56
Ja..
Einen Quarz habe ich nicht dran. Ich hab nur gelesen das bei 1Mhz eine Baudrate von 4800 möglich ist und die Abweichung bei 2% liegt. Meinst du es könnte daran liegen??
Soll ich dann einen Quarz passend für die UART Baudrate nehmen oder einfach einen Quarz mit z.B 4 Mhz??
Hier habe ich eine Tabelle gefunden:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/uart_rs232_zum_computer/
Dann müsste es doch(wenn es am Quarz liegt) mit dem hier funktionieren, oder ??
http://www.conrad.de/ce/de/product/182990/Quarz-fuer-allgemeine-Anwendungen-Frequenz-18432-MHz-Bauform-HC-18U49U-B-x-H-114-mm-x-1346-mm

Mfg
bnitram

Thomas E.
10.07.2012, 19:01
Das muss laufen. Ich verwendete auch sehr oft UART ohne Quarz (also nur mit dem internen RC-Oszillator). Wenigstens irgendetwas musst du empfangen können. Hast du auch im Terminal am PC 4k8 Baud eingestellt?

bnitram
10.07.2012, 19:03
Das Terminal ist auf die 4800 Baud eingestellt aber ich bekomme trotzdem nichts zurück. :(
Wenn ich an TX vom Attiny2313 eine LED zu Minus schalte sieht man es flackern. Das müsste doch eig. heißen das der ATtiny etwas Sendet oder ??

Mfg
bnitram

Thomas E.
10.07.2012, 19:12
Deinen Code habe ich gerade durch den Simulator laufen lassen, bei mir funktioniert er wie er soll. Also muss es an deiner Hardware liegen. Hast du am Terminal auch 8 Datenbits und ein Stoppbit eingestellt? Kein Handshake?

021aet04
10.07.2012, 20:35
Ich vermute das es ein Hardware (oder Software am PC) Problem ist. Wenn die Led flackert heißt das normalerweise das etwas gesendet wird. Wenn du willst kann ich es mit einem Attiny testen (musst allerdings die hex hochladen da ich mit dem AVR Studio programmiere).

MfG Hannes

bnitram
10.07.2012, 20:38
Ja bei mir klappt das im Simulator auch alles. So sind meine Einstellungen im Terminal:
22753

Somit müsste eig. alles richtig sein, oder ??

Mfg
bnitram

Edit:
@021aet04
Das wäre sehr nett.
Hier die Hex-Datei

021aet04
10.07.2012, 22:12
Bei mir funktioniert es. Hier ein Ausschnitt. Takt habe ich den internen 8MHz Takt mit dem 1/8Teiler verwendet (Takt also 1MHz).

MfG Hannes

bnitram
11.07.2012, 16:15
Danke Hannes das du es für mich getestet hasst!
Bei mir habe ich immer noch keinen Fehler feststellen können.
Ich werde mir die Tage mal einen Quarz besorgen und es erneut testen. Ich werde auf jedenfall das Problem weiter suchen, da ich die UART-Schnittstelle brauche!

Mfg
bnitram

021aet04
11.07.2012, 16:28
Ist eventuell das Fuse gesetzt der den Takt durch 8 teilt? Wo hast du RX und TX verbunden (für Echo Test)? Direkt am µC?

MfG Hannes

bnitram
11.07.2012, 17:38
Hallo Hannes,
Ich habe keinerlei Fuse geändert. Sie sind also noch so wie ich den ATtiny2313 gekauft habe. Für den Echo-Test habe ich RX und TX am MAX232 verbunden. Das hat Problemlos funktioniert.

Mfg
bnitram

Torrentula
11.07.2012, 17:41
Also könnte weiterhin das Problem bestehen, dass der ATtiny2313 nicht richtig an den MAX232 angeschlossen ist. Vergewissere dich, dass deine Verbindung zum Computer und der tiny beide an den selben Kanal angeschlossen sind so wie hier: http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

021aet04
11.07.2012, 17:43
Versuche direkt beim µC die Leitungen zu verbinden. So kannst du den Gesamten "Weg" überprüfen. Entferne zuerst den µC damit kein Kurzschluss entsteht.

MfG Hannes

bnitram
11.07.2012, 17:59
Ich habe gerade nochmal alles durchgemessen und auch nochmal direkt am µC RX und TX verbunden wie Hannes es gesagt hat. Es war alles richtig.
Dann habe ich das ganze nochmal auf Funktion getestet....und siehe da es FUNKTIONIERT.
Ich weiß zwar nicht warum es sonst nie funktioniert hat aber jetzt gehts.
Nochmal alle die mir geholfen haben!!! Danke

Mfg
bnitram

bnitram
11.07.2012, 18:07
Eine Frage hab ich noch jetzt wo alles klappt:
Ist es normal das der MAX232 warm wird ??

Mfg
bnitram

021aet04
11.07.2012, 18:17
Soweit ich weiß sollte der nicht warm werden, da dort kein Strom fließen sollte (sollte so niedrig sein das er nicht warm wird).

MfG Hannes

bnitram
14.07.2012, 10:24
Hallo Nochmal,
da der MAX232 nur an einem alten Laptop mit WinXP funktioniert habe ich mir schon als ich dieses Thema erstellt habe einen CP2102 USB to UART Baustein aus China bestellt. Das ganze hat rund 2,50€ gekostet (inkl. Versand) und es war sogar schon ein anschluss Kabel dabei. Alles funktioniert jetzt damit auch an meinem Win7 Rechner über USB.

Mfg
bnitram

bnitram
16.07.2012, 18:30
Wenn es jemand interessiert, hier der Link zu dem UART:
http://www.ebay.de/itm/1pcs-USB-2-0-to-TTL-UART-6PIN-Module-Serial-Converter-CP2102-STC-PRGMR-/251039347548?pt=LH_DefaultDomain_0&hash=item3a731c735c#ht_2229wt_1389

Kostet 2,18€ inkl. Versand. Dauert zwar ca.2 wochen ist aber auch günstig :)

Mfg
bnitram

021aet04
17.07.2012, 06:47
Ich habe den UM2102 von ELV http://www.elv.at/mini-usb-modul-um2102-komplettbausatz.html

Ist der gleiche Chip.

Der Vorteil von der ELV Platine ist das man diesen wie ein SMD Modul auflöten kann (wenn es auf die Höhe ankommt). Der Preis von deinem Modul ist aber unschlagbar.

MfG Hannes

bnitram
17.07.2012, 09:54
Hallo Hannes,
deinen Chip hatte ich mir auch angeguckt, aber das China Angebot war einfach unschlagbar :)
Laufen tut der ja auch super. Hätte ich nicht den aus China bei ebay gefunden hätte ich jetzt auch den UM2102, da der einfach auch günstig ist. Aber die Versandkosten treiben alles immer in die Höhe.

Mfg
bnitram

021aet04
17.07.2012, 09:55
Ich habe den einfach mitbestellt, da ich noch mehr benötigt habe.

MfG Hannes