hallo, ich arbeite mich seit einiger zeit in die AVR Programmierung mit C ein. Dabei orientiere ich mich im wesentlichen an dem Tutorial von Christian Schifferle (http://www.mypage.bluewin.ch/ch_schifferle/Atmel.zip). Komme recht gut voran. Allerdings schaff ich es einfach nicht vom PC aus Zeichen über die serielle Schnittstelle an den uart des Microcontrollers zu schicken. Die umgekehrte Richtung funktioniert tadellos. Mein Traum wäre es eine Zahl zwischen 1 und 8 in meinem PC Terminalprogramm einzugeben woraufhin eine LED an dem entsprechenden Portpin aufleuchtet. ich benutze: - den at90S2313 - einen max232 für die Pegelanpassung - hyperterm und brayterm zum senden irgendwelche ideen? stark dankbar wär ich auch für ein stückchen Beispielcode, den ihr schon ausprobiert habt und bei dem ich mir sicher sein kann das er auch wirklich funzt (vorteilhaft wäre C Code) Stefan
Das ist keine schwierige Aufgabe. Du mußt... - das Bit RXEN im UART-Konfigurationsregister setzen; das schaltet den UART-Receiver ein - das Bit RXCIE im UART-Konfigurationsregister setzen; das gibt den zugehörigen Interrupt ("UART receive complete interrupt") frei. - in die Interrupt-Einsprungtabelle am Anfang des Programms schreibst Du einen entsprechenden Eintrag ("rjmp UARTReceiveComplete") - und zu guter letzt schreibst Du den UARTReceiveComplete- Interrupthandler. Im wesentlichen besteht der bei Deinen Anforderungen darin, das im UDR-Register wartende empfangene Byte auszulesen mittels "in r16, UDR", und es sogleich auf einen Port Deiner Wahl zu schicken mittels "out PORTB, r16". Dein Interrupthandler sähe also (in Assemblercode) im wesentlichen so aus: UARTReceiveComplete: push r16 in r16, SREG push r16 in r16, UDR out PORTB, r16 pop r16 out SREG, r16 pop r16 reti Kannst Du damit was anfangen?
Hi, schau mal ins Wiki. Im Wiki wurde eine neure Version des GCC Tutorials erstellt. Mfg Dirk
Danke euch, hab mir eure Vorschläge mal zu gemüte geführt: leider kann ich mit deinem Assembler Code nicht allzuviel anfangen. Die in deinen Stichpunkten beschriebenen Codebestandteile sind jedoch alle in meinem C Programm enthalten. Wie gesagt verwende ich einen Beispielcode von Christian Schifferle. Das von Dirk empfohlene Tutorial ist anscheinend eine neuere Version des von mir verwendeten Dokuments. Allerdings ist jetzt nur noch ein Kapitel "uart - teil 1" enthalten, das sich mit dem senden vom uart an den pc beschäftigt. Das zweite Beispiel, das behandelt, wie man ein vom PC empfangenes Zeichen mit dem AVR weiterverarbeitet (portpins setzen/zurücksenden/...) ist nicht mehr enthalten. War da ein Fehler drin über den ich bei mir auch stolpere, oder ist das nur eine aktualisierungslücke? Simon
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.