Hallo, sitze schon seit einigen Tagen vor dem Pc! Ich versuche eine Kommunikation zwischen zwei uC herzustellen. Jedoch mit wenig Erfolg! Habe von eurem Tutorial die beiden Testprogramme heruntergeladen und auf zwei Mega8 gebrennt: Senden: http://www.mikrocontroller.net/sourcecode/tutorial/uart-mega8.asm Empfangen: http://www.mikrocontroller.net/sourcecode/tutorial/uart-led.asm Nun habe ich den sendenden Mega an den PC angeschlossen. Leider empfange ich nicht das was ich sollte("Test"), ich bekomme eine Folge von Hex Zahlen: F8 00 80 78 1E. Das von mir verwendete Programm heißt Term. Einstellungen: Baudrate 9600, Databits 8, Parity none, Stopbit 1 und handshaking none; Würde mich sehr freuen wenn mir jemand weiterhelfen könnte! Anbei das Bild meiner Schaltung! Danke, mfG Zsolt
Was für einen Quarz hast Du denn auf dem Olimex-Board? Ich sehe auch keine Kondensatoren am Quarz. Fusebits richtig gesetzt?
klemm mal direkt an den VCC vom MAX232 einen 100n Keramik Kondensator, daran lag es bei mir mit den Elkos war die Spannung offensichtlich nicht stabil genug. Versuch auch mal ob du ein loopback zum laufen bekommst (TXD/RXD am µC direkt miteinander verbinden und am Computer irgendwas senden, wenn es zurück kommt weist du schon mal das der MAX232 nicht defekt ist.
Hi! leider habe ich keine genaue ahnung vom quarz - mir wurde nur gesagt dass ich diese board verwenden könne.. (wie auch im tutorial beschrieben) habe auch einen neuen hexcode in TERM erhalten (hatte wohl zuvor ein falsches programm raufgebrannt) - dieser lautet: 00 78 1E 78 1E F8 78 FE 80 78 00 0F 78 1E 00 3C F0 80 78 00 F0 78 FE 00 (nichts mit 'T' 'e' 's' 't' '!' '10' '13' ) wie man im bild sieht, halte ich die batterie nur mit den fingern an die angelöteten kabel.. kann vielleicht ein prob sein? was heisst dieser code?? lerne nix daraus :( auch wenn ich mir die ascii tables anschau
Solange Du meine Fragen nicht beantworten kannst, kann ich Dir auch nicht weiterhelfen...
Entwicklungsplatine für alle 28-poligen AVR-Controller (AT90S4433, ATmega8, ATmega48) Die Platine enthält einen Sockel für den Mikrocontroller, einen 8 MHz-Quarz, einen Anschluss für den ISP-Programmer und einen RS232-Pegelwandler mit einer 9-poligen Sub-D-Buchse. leider kann ich nicht mehr sagen :( wenn du mir aber sagen kannst wo ich nachsehen sollte mache ich das natürlich sofort, danke für deine bemühung!
@Zsolt: Häng mal den Quellcode hier mal an, ich habe da so eine Ahnung. Gruss Jadeclaw.
ich hab mal ein bissl gegoogelt: Schaltung: http://www.olimex.com/dev/avr-p28.html Wie hast du die Fuse-Bits vom ATmega8 gesetzt? Die Software ist ja für 4 MHz Taktfrequenz geschrieben... @Dino siehe Eingangsposting
ohhhhhh! anscheinend ein fehler im tutorial - habe die baudrate im TERMINAL auf 2400 gesetzt und empfange jetzt Test! aber wie bringe ich jetzt den uC2 (empfänger) dazu auch einen Wert zu empfangen? also ohne pc uC<->uC2
Kein Fehler im Tuto vermut ich, sondern Du hast den Mega8 nicht auf die richtige Taktfrequenz / Taktquelle eingestellt
> Kein Fehler im Tuto vermut ich, Ganz sicher sogar keiner. > sondern Du hast den Mega8 nicht auf die > richtige Taktfrequenz / Taktquelle eingestellt Die Software ist für 4 Mhz geschrieben. Seine Baudrate ist genau 1/4 dessen was sie bei 4Mhz sein sollte. Logische Schlussfolgerung: Sein µC läuft nicht auf dem Quarz sondern auf dem internen Taktgenerator mit 1 Mhz > aber wie bringe ich jetzt den uC2 > (empfänger) dazu auch einen Wert zu empfangen? Falsche Frage. Kümmere dich erst mal darum, dass µC1 so arbeitet wie er soll. Das heist: Die Fusebits umstellen, so dass auch der Quarz benutzt wird. Und dann änderst du erst mal die Senderoutine so um, dass die auch von 8Mhz ausgeht und nicht von 4. Und erst dann, kommt der 2te µC drann. Du fängst damit an, den vom PC aus anzusteuern. Solange das vom HTerm (oder Hyperterminal) aus nicht funktioniert brauchst du gar nicht daran denken vom µC1 aus an µC2 zu senden.
wie gesagt, ich habe ja die quellcodes (oben verlinkt) verwendet, welche im tutorial aufgelistet waren. hmm.. kennt sich jemand mit TERMINAL aus? verstehe ned ganz ganz wie das funktioniert wenn ich das receive programm testen möchte.. wenn im .asm programm '1' abgefragt wird, muss ich dann in TERMINAL hex, dez oder was auch immer senden? lg und nochmals danke!!!
@ Karl Heinz: also die clock von 4000000 auf 8000000 setzen oder? (.equ CLOCK = 8000000 ) und wie funktioniert das mit denn Fuse bits bitte? danke für die informative antwort!
UBRRL muss bei 8MHz und 9600 baud auf 51 gesetzt werden, als Terminalprogramm empfehle ich Hterm.exe, ist einfach (ohne Installation), alles auf einen Blick und Freeware. Die zwei 22pF-Kerkos am Quarz gegen Masse nicht vergessen! Wenn die Taktfrequenz nicht genau stimmt kanns bei Zeitkritischen Sachen wie USART zu Fehlern kommen.
Laut Schaltung scheinen die Kerkos schon drauf zu sein, eventuell "unterputz" als SMD Fuses: Für Anfänger ein heißes Eisen http://www.mikrocontroller.net/articles/AVR_Fuses Lesen und verstehen (wichtig)
> wie gesagt, ich habe ja die quellcodes (oben verlinkt) verwendet, > welche im tutorial aufgelistet waren. Die Baudrate wird von der Taktfrequenz abgeleitet indem diese solange runtergeteilt wird, bis die richtige Frequenz für den Sende/Empfangsteil der RS232 entsteht. Daher muss man die Taktfrequenz kennen um den Teilerfaktor einstellen zu können. Die Software die du hast macht das auch. Einzige Bedingung: Man muss ihr sagen wie hoch denn die Taktfrequenz tatsächlich ist. In deiner Software ist 4Mhz eingetragen (die 4000000 ganz am Anfang). Wenn dein µC aber nichtmit 4Mhz läuft, dann kann das gar nicht funktionieren. Alte Regel: Wenn die Eingangswerte schon Mist sind, dann kann hinten nur Mist rauskommen. Aus den Werten die du ermittelt hast wenn die Sendefunktion funktioniert, kann man ablesen, dass dein µC mit 1Mhz läuft. Er sollte aber mit 8 Mhz laufen, denn da ist ein 8Mhz Quarz auf dem Bord (auf dem Quarz steht im übrigen drauf, wie schnell er läuft). Die einzige logische Folgerung: Dein µC ist noch auf 'interne Taktquelle' eingestellt und nicht auf 'externen Quarz'. Den brauchst du aber, wenn die Sendefunktion langfristig stabil laufen soll. Also lies mal nach, wie du in den Fusebits den externen Quarz aktivieren kannst. Das sind die CKSEL0 bis CKSEL3 Bits. WIe man die umstellt hängt von der Brennsoftware ab, die du benutzt. > hmm.. kennt sich jemand mit TERMINAL aus? verstehe ned ganz ganz > wie das funktioniert wenn ich das receive programm testen möchte.. > wenn m .asm programm '1' abgefragt wird, muss ich dann in > TERMINAL hex, dez oder was auch immer senden? Du drückst einfach auf die Taste '1'. Oberste Zeile, gleich neben '2' Dein Terminalprogramm sendet dann den ASCII Code für '1' über die serielle Schnittstelle. Am µC wird das dann (hoffentlich) korrekt empfangen. Dein Programm wertet das empfangene Zeichen aus indem mit '1' verglichen wird. Da das dann eine Gleichheit ist, macht dein Programm was immer programmiert ist zu tun, wenn eine '1' empfangen wird.
Was die Fuses angeht: kann nur jedem empfehlen (besonders Anfängern!), die paar € für den AVRISP auszugeben! Im Prog-Plugin vom AVR-Studio sind die Fuses sauber mit Klartext aufgelistet und werden schon beim Aufrufen des Reiters vom µC gelesen. Auch die ISP-Frequenz ist übersichtlich einstellbar.
@ Karl heinz Buchegger Ich habe jetzt den Empfänger mal an den Pc angeschlossen und probiert ihm 1 zu übergeben! Laut programm müsste er doch jetzt den PORTB,0 setzen und somit müsste ich doch 5V am Port messen können, oder? Danke für eure Hilfe, ich werde mir mal die Fusebits durchlesen! MfG Zsolt
Für den Empfänger gilt das Gleiche wie für den Sender: Die UART Einstellung muss richtig sein. Solange du im Empfangsprogramm eine andere CLOCK Frequenz eingestellt hast als die die der µC tatsächlich benutzt, hat es keinen Sinn da rumzuprobieren.
ich verstehe eines nicht ganz, ich kann ja die fuse bits anscheinend im avr studio einstellen.. zum brennen verwende ich ein fertiges c programm eines bekannten, mit einem selbst gebasteltem kabel - leider stelle ich fest dass viele leute hier schreiben, die fusebits werden im brenn programm (GUI) eingestellt, nun habe ich ja leider kein solches, nur ein selbst gebasteltes welches nicht von mir geschrieben ist. wie kann ich ansonsten meine fusebits einstellen? verständnissfehler? lg
Du hast ein ISP Kabel für den Parallel Port? -> Google: "yaap" oder "ponyprog" Und Tutorial lesen!
ja ich hab ein kabel für den parallelport aber ich weiss ja ned ob yaap etc die gleichen pins am parallel port verwendet wie das zusammengestöpselte programm welches ich habe und worauf das kabel abgestimmt ist
> zum brennen verwende ich ein fertiges c programm eines bekannten, > mit einem selbst gebasteltem kabel - leider stelle ich fest dass > viele leute hier schreiben, die fusebits werden im brenn programm > (GUI) eingestellt, nun habe ich ja leider kein solches, nur ein > selbst gebasteltes welches nicht von mir geschrieben ist. Dann hast du 2 Möglichkeiten: * Entweder du rufst deinen Bekannten an, wünscht ihm gleich mal vorsorglich ein gutes neues Jahr und fragst ihn, wie man mit seinem Brennprogramm an die Fuse Bits rankommt * Du schnappst dir einen Schraubenzieher und öffnest mal das Gehäuse deines Parallelportsteckers. Danach vergleichst du die Verschaltung mit dem was zb. PonyProg haben möchte und weist ob das geht oder nicht. Du kannst natürlich auch einfach mal PonyProg starten, das Kabel anstecken und versuchen ob du die Fusebits einlesen kannst. Das musst du sowieso bevor du neue Fusebits brennst. Pony sagt dir schon, ob das geklappt hat oder nicht. Ein bischen Fantasie musst du schon selbst aufbringen um Probleme zu lösen. Du möchtest einen µC programmieren und das geht nicht ohne etwas Eigeninitiative.
ich glaube ich bestelle mir zu diesem board: http://shop.mikrocontroller.net/csc_article_details.php?nPos=0&saArticle[ID]=29&VID=mhFDXPO2MHerITxO&saSearch[word]=&saSearch[category]=AVR&saSearch[special]= dieses kabel: http://shop.mikrocontroller.net/csc_article_details.php?nPos=0&saArticle[ID]=32&VID=mhFDXPO2MHerITxO&saSearch[word]=&saSearch[category]=AVR&saSearch[special]= dann müsste ich ja mit ponyprog yaap etc arbeiten können oder? :) lg und danke für eure hilfe!!!
Wieder meine alte Leier: Leute, investiert doch die 39€ für'n AVRISP, dann seit ihr diese Probleme los! Gerade Anfänger verlieren mit dem Ponyprog / Yaap - Gedöns schnell die Lust. Wenn man bei mehr als einer möglichen Fehlerquelle suchen muss wird's schwierig! GUTES WERKZEUG IST GOLD WERT!
Sonic wrote: > Wieder meine alte Leier: > Leute, investiert doch die 39€ für'n AVRISP, dann seit ihr diese > Probleme los! Gerade Anfänger verlieren mit dem Ponyprog / Yaap - Gedöns > schnell die Lust. Wenn man bei mehr als einer möglichen Fehlerquelle > suchen muss wird's schwierig! GUTES WERKZEUG IST GOLD WERT! Dem kann ich nur zustimmen, ich hab auch mit dem Parallelen Kabel angefangen, allein schon das ständige hin und her gewechsel zwischen AVRStudio und yaap hat schnell gestört. Vor allem auch die Fuse bits lassen sich über AVRStudio deutlich besser verwalten. Am besten baust du dir noch selber einen ISP Adapter, dann lernst du vielleicht noch ein wenig dabei und es ist nochmal billiger.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.