Simple Befehle über RS232 am ATmega16 steuern (in C)

Gast #683709
Lesenswert?
• ▲
▼
Hallo zusammen,

kurze Frage:

Leider habe ich noch keinerlei Erfahrung mit der Implementierung von 
RS232 in ein C-Programm. Darum hoffe ich auf Eure Unterstützung.

Folgende Anforderung:

In meinem Projekt sind an einem ATmega16 vier Taster angeschlossen, 
welche jeweils eine separate Funktion steuert. (nur Counter mit 
unterschiedlicher Portzuweisung). An sich sehr primitiv.

Nun soll noch die Möglichkeit implementiert werden, die gleichen 
Funktionen über RS232 zu steuern.

Kann mir da jemand weiterhelfen und evtl. einen kurzen Quellcode bieten?

Beste Grüße

Tom
Gast #683724
Lesenswert?
• ▲
▼
den Quelltext musst du schon alleine basteln.
Schwierig ist aber nicht.
Erstmal kannst du dir selbst irgendein Kommunikationsprotokoll 
ausdenken.
Das kann im einfachsten Fall sogar ein einzelnes Byte sein, damit 
könntest du theoretisch schon mal 256 verschiedene Funktionen steuern. 
Für den Start reicht das schon mal.
Also UART im MC initialisieren und auf hereintröpfelnde Bytes reagieren.
Wichtig ist, dass du auf beiden Seiten die gleichen 
Schnittstellenparameter einstellst. Dazu noch einen MAX232 o.ä. als 
Pegelwandler, fertig.
Gast #683758
Lesenswert?
• ▲
▼
Du must Tastenabfrage/RS232 und Codeausführung trennen
1
function doSomething(unsigned char cmd) {
2
  // hier ein switch / if/then/else Konstrukt
3
  // das über cmd die gewünschten Befehle entgegennimmt
4
}
5

6

7
Schleife die periodisch die Taster abfrägt (am besten im Timer)
8
...
9
if (keypressed()) doSomething(keycode);
10
...
11

12
Interrupt der beim Empfang eines Zeichens auslöst (RX-Complete)
13
...
14
doSomething(UDR); // interpretiere Byte an RS232 wie einen Tastencode
15
...
den Rest musst dir aber selbst weiterbasten ;-)

Gruß
Roland

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.