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 :)
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
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
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
Hallo Jannis, das ist ein großartiger Link! Vielen Dank. Damit bin ich erstmal eine Weile beschäftigt. Viele Grüße, Martin
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.