Forum: Mikrocontroller und Digitale Elektronik Simple Befehle über RS232 am ATmega16 steuern (in C)


von Tom (Gast)


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

von crazy horse (Gast)


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.

von Roland Praml (Gast)


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

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.