Ich arbeite mit einem Freund gerade an einem kleinen Uni-Projekt. Unser Teilprojekt besteht darin, die Kommunikation zwischen der Atmel-Motte und dem PC über die serielle Schnittstelle herzustellen. Wir versuchen nun seit 3 Wochen vergeblich die Motte zum Senden von Zeichen zu bewegen damit wir diese auf dem PC empfangen können. Wir sind eigentlich sogar ziemlich sicher, dass unser Programm im Anhang auch funktioniert, nur leider empfangen wir auf dem PC rein gar nix. Wir haben uns natürlich an sämtlichen Vorlagen, Beispielcodes und Datasheets orentiert und schon etliche Fehler entdeckt und allerlei Variationen ausprobiert, nur leider bisher ohne Erfolg. Wir wären wirklich froh, wenn uns jemand einen heissen Tip geben könnte - der Prof konnte uns bisher nicht wirklich weiterhelfen und neue Tutorials finden wir auch keine mehr... Unsere Hard- und Software: Atmel 128 mit Programmer (STK500 nehmen wir an - sieht allerdings total anders aus, als auf dem Bild auf der Atmel Homepage) Um die Motte zu programmieren: UISP unter Linux Fedora Core 2 (das funktioniert auch 100%-ig) Um Kommunikation zu überprüfen: WinXP: Hyper Terminal und nen Serialport Sniffer um zu überprüfen, ob überhaupt was läuft. Uns ist vorerst eigentlich total egal, ob das Ding im Atmel103 oder 128 Modus läuft und ob die Kommunikation per UART oder USART funktioniert, hauptsache wir bekommen mal ein Lebenszeichen!!! Übrigens: Welches Programm kann man benutzen um die Motte unter Windows zu programmieren (AVRDude haben wir nicht zum laufen gebracht)? Oder alternativ: welches Programm unter Linux entspricht dem HyperTerminal in Windoof? Zur Zeit switchen wir immer zwischen den beiden OS hin und her, was ziemlich nervig ist... Würden uns über Hilfreiche Tipps riesig freuen, mitlerweile sind wir ziemlich ratlos und demotiviert und die Zeit läuft... Erik
In Eurem Quellcode wird der Registername UBRR0L (bei Euch: UBRRL) als Adresswert 0x29 definiert, ihr greift aber über die OUT-Anweisung darauf zu. Damit beschreibt ihr dann aber das Register OCR1BH (= 0x29). Entweder UBRRL auf 0x09 setzen oder per STS-Anweisung darauf zugreifen. Jochen
Nachtrag zu oben: Die Registerdefinitionen von UCSRA, UCSRB und UDR sind genauso falsch. Neu definieren oder per STS,LDS zugreifen. Diese zwei Codezeilen schauen auch nicht unbedingt Vertrauen erweckend aus: ldi r17, UCSRA sbrs r17, UDRE Besser so: sbis UCSRA, UDRE Dann aber unbedingt UCSRA auf 0x0b setzen. Jochen
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.