Forum: Mikrocontroller und Digitale Elektronik vom PC an den MC senden


von Stefanus (Gast)


Lesenswert?

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

von Santa Klaus (Gast)


Lesenswert?

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?

von Dirk (Gast)


Lesenswert?

Hi,

schau mal ins Wiki. Im Wiki wurde eine neure Version des GCC Tutorials
erstellt.

Mfg

Dirk

von Stefanus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.