Forum: Mikrocontroller und Digitale Elektronik Taster über RS232 abfragen


von Schüler (Gast)


Lesenswert?

Hallo Elektroniker,

gerade bin ich dabei, mich ein wenig mit Schnittstellenprogrammierung zu 
beschäftigen. Jedoch steht bei mir eigentlich die Softwareentwicklung im 
Vordergrund - nicht die Elektronik.

Für den Einstieg würde ich gern einfach mal ein paar Taster und Schalter 
abfragen und davon abhängig ein paar LEDs ein- und ausschalten.

Dazu habe ich mir im Internet ein RS232-I/O Board "IO 88" von ELV 
herausgesucht, was sich vermutlich für diesen Zweck ganz gut eignet.
(http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=7656&flv=1&bereich=&marke=)

Allerdings ist es so, dass mir das nötige Werkzeug für den Aufbau der 
Platine fehlt. Hinzu kommt, dass ich absolut keine Erfahrung mit dem 
Löten von SMD Bauteilen habe...

Für mich stellt sich nun die Frage, ob man so ein IO-Board nicht auch 
fertig aufgebaut bekommen kann. Bei ELV scheinbar nicht...

Habt ihr eine Idee oder könnt vielleicht sogar ein Board empfehlen?

Vielen Dank für eure Mühen,

Martin :)

von Serieller (Gast)


Lesenswert?

Wenn du ohne Löten auskommen willst:

Schau dir mal das K8055 Board vom Velleman an. Das gibt es auch als 
Fertiggerät VM110 
(http://www.velleman.eu/distributor/products/view/?id=351980). Der 
Bausatz K8055 kostet bei Conrad 30€, das Fertiggerät 50€.

Oder die Pollin-Boards, die gibt es auch fertig aufgebaut:
* Pollin ATMEL Evaluations-Board
* Pollin Funk-AVR-Evaluationsboard
* AVR Net-IO Bausatz von Pollin

von Schüler (Gast)


Lesenswert?

Hallo,

vielen Dank für Deine Hinweise und die Links.
Ich schau mir das alles mal an.

Zum Verständnis hätte ich gerade noch eine Frage, die für euch bestimmt 
kinderleicht ist.

Ich stelle mir die Abfrage momentan noch so vor, dass man z.B. aus einem 
Programm heraus (in C++ geschrieben) die serielle Schnittstelle in 
while() Schleife abfragt.
Wenn ich einen Taster gedrückt habe, ist das korrespondierende Bit in 
den gelesenen Daten 1 (oder auch 0).

Mal angenommen, ich möchte zählen, wie oft ein Taster gedrückt wurde.
Dann funktioniert es ja so nicht:
1
int anzahl = 0;
2
while( gelesenes_byte = lese_schnittstelle() ) {
3
  if( gelesenes_byte | bitmaske_fuer_taste_1 == 1 ) {
4
    anzahl++;
5
  }
6
}

denn so zähle ich ja die Anzahl der schleifendurchläufe, in denen der 
Taster gedrückt war. Also viel zu viel...


Löst man sowas mit der Software, indem man sich die Zustände des 
vorherigen Durchlaufs merkt und immer vergleicht?
Oder löst man das auf Hardwarebasis direkt am Controller (z.B. ATMega8)

Sorry, für die vielleicht dumme Frage, aber ich bin wirklich ganz ganz 
neu auf dem Gebiet.

Danke,

Martin

von Jannis C. (kabelwurm)


Lesenswert?

Hallo,
ich würde das direkt am Controller mit
1
if ( (PINA &(1<<PINAx) ) {
lösen. Du musst natürlich ans Entprellen denken, also erstmal eine 
Funktion programmieren oder du schreibst nach deiner Operetion
1
_delay_ms(100)
Die 100 muss nicht sein, es gehen auch andere Zeiten. Bedenke nur, dass 
in dieser Zeit der Prozessor einfach nur wartet und nichts anderes 
macht.
Zur Abfrage und für alles andere, was ich hier angesprochen habe, gibt 
es auch Artikel im GGC-Tutorial, die für Schüler acu verständlich sind.
Ich bin auch noch Schüler und bin da gut durchgestiegen.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29
Gruß Jannis

von Schüler (Gast)


Lesenswert?

Hallo Jannis,

das ist ein großartiger Link! Vielen Dank.
Damit bin ich erstmal eine Weile beschäftigt.

Viele Grüße,

Martin

von Jannis C. (kabelwurm)


Lesenswert?

Da nicht für.
Das Tutorial für C gibt es auf der Home Seite oben links.
Hilft bei ziemlich allen Fragen, die man am Anfang so hat.
Und wenn man Fragen zum Controller hat, das Datenblatt ist erste Wahl, 
und wenn das die Frage nicht lösen kann, dann im Forum AVR-GGC fragen 
und suchen.
Gruß Jannis

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.