Taster über RS232 abfragen

Gast #2102153
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 :)
Gast #2102198
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
Gast #2102289
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
#2102447
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren