UART

Gast #25481
Ich bins wieder! Ich hoffe ich werde nicht irgendwann nervig. Mit meinem 
Projekt bin ich aber schon ganz schön weit gekommen und das nur mit 
Eurer Hilfe! Aber jetzt zu meiner Frage:

Ich möchte zwischen dem Rechner und meinem Mirkocontroller Board eine 
ART Datenübertragung machen über die serielle Schnittstelle, wo ich zum 
Bespiel die Eingänge HI oder LOW schalten kann oder wo ich einen Timer 
Aktivieren kann oder wo ich die Eingänge abfragen kann.

Erste Mäglickeit ist Stings zu senden z.B.
PUT PORT D 1    - z.B. setze Port D1 auf HI
oder
GET PORT D 1    - z.B. frage Port D1 ab.

Ist es sinnvoll es so zu machen oder es in ein Protokol zu verpacken 
z.B.
PUT = 00001111
GET = 11110000

u.s.w.

Wie macht man sowas am besten?

Wie steuert man mit einem Programm am besten einen AVR?
Gast #25483
Ich würde das ganze per Interrupt aufbauen: Ist ein Zeichen fertig 
empfangen, so wird es einem buffer-array zugeführt. Sollte das Zeichen 
eine bestimmte taste sein(z.B.Enter) so wird der buffer ausgewertet. 
über diesen weg ist es einfacher wenn du nur einzelne zeichen nimmst 
z.B. r p b für read port B oder so. In diesem fall must du nur das 1. 3. 
u. 5. Zeichen auswerten. Der Controller führt dann die Anweisung aus, 
sendet das Ergebnis zurück (evt. auch über Interrupt) und kehrt dann in 
den normalen Porgrammablauf zurück. Ich hab mal ein kleines Projekt so 
aufgebaut. Hat auch halbwegs funktioniert...

Gruß, Florian
Gast #25484
Hallo Sebastian

Bau doch einfach eine Schleife, die auf ein Zeichen von der Seriellen 
Schnittstelle wartet.

dim portd = output
Dim A As Byte
start:
Do                  'start loop
 A = inkey()        'look for character
 loop until A > 0   'is variable > 0

  if a = 65 then      'Zeichen = A
    Portd = 255         'Bedingung
  end if
  if a = 66 then      'Zeichen = B
    portd = 0         'Bedingung
  end if
goto start


Wenn du viele Befehle schicken willst, bietet sich "select case" an. 
Kann mit einem terminal Prg gut testen.

MFG
Dieter

PS: nur ein Vorschlag, geht bestimmt anders und besser

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.