- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 11

Thema: RN-Control: Tasten abfragen per Interrupt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo dariegel,
    um zu verstehen, wie das Programm funktioniert, solltest Du unbedingt das Datenblatt zu deinem µC lesen und verstehen.

    Ich habe dieses für den Mega32 benutzt: http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf

    Dort gibt es das Register ADCSRB für Mega32 nicht - deshalb der Compiler Fehler. In meinem Code wird mit Adcsrb = Adcsrb Or &B00000010 für ATtiny45 der ADC auf Start der Messung durch INT0 eingestellt. Im ATmega32 wird das im SFIOR Register gemacht. Also die Zeile mit ADCSRB raus und die Zeile mit der SIFOR Zuweisung rein.

    Zeile ADMUX: Du mußt für Dein RN-Control Board den ADC-Kanal 7, an dem die Tasten angeschlossen sind, an den ADC "anschließen". Das macht Admux = Admux Or &B00000111 auf dem Mega32. Auf meinem ATtiny habe ich einen anderen Kanal genutzt und deshalb sieht das bei mir etwas anders aus.

    Noch etwas zum GETADC. Das ist laut Bascom Hilfe zum Ausführen einer Einzelmessung da. Einzelmessung wird in meinem Code nicht genutzt. Der ADC wird auf Start der Messung durch Setzen des INT0 Flags eingestellt. Damit ist GETADC durch den Aufbau des Programms gar nicht sinnvoll und der Meßkanal, der in GETADC übergeben werden muß, muß "manuell" eingestellt werden. Im Simulator kann man nachvollziehen, welche Register im µC durch die entsprechenden Befehle zB CONFIGADC wie gesetzt werden.

    Das Programm funktioniert also grob so, daß bei Drücken einer Taste das INT0 Flag gesetzt wird (Signal kommt über die Brücke zu dem entsprechenden µC Pin (PD2) ) Dadurch wird eine ADC Messung getriggert und bei Beendigung der Messung erzeugt der ADC einen Interrupt. In der zugehörigen ISR wird dann der Messwert aus den ADC Registern ausgelesen und steht zur weiteren Auswertung in den entsprechenden Variablen bereit. Weil keine INT0 Interrupt Routine ausgeführt wird, bleibt das INT0 Flag stehen und muß deshalb noch durch Schreiben einer 1 gelöscht werden damit es beim nächsten Tastendruck wieder gesetzt werden kann um die nächste Messung triggern zu können.

    Ich möchte nochmal drauf hinweisen, daß das Programm funktioniert aber nicht perfekt ist. Eben nur eine Idee. Liegt an Dir was Du daraus machst oder doch eine andere Lösung verwirklichst.

    Bei Adc_result sagt der Compiler Unknown statement, hast Du da etwas vergessen?
    Nein, nichts vergessen, sondern da gehört das rein, was auch immer Du mit dem Meßergebnis anfangen möchtest - vielleicht auch gar nichts in der ISR und wertest ADC_result zwische DO und LOOP aus.

    Ebenso ist der Header mit $HWSTACK nicht vollständig. Die hatte ich nur eingefügt um Dir zu zeigen, das der Wert mit 32 in Deinem Programm zu klein ist.

    PS in meinem Code ist Portb.2 und Portb.3 natürlich auch nur für mich zutreffend. Die mußt Du bei Dir auch entsprechend anpassen

    Gruß
    Searcher
    Geändert von Searcher (27.06.2011 um 08:37 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Dreh-Encoder und Tasten gleichzeitig abfragen
    Von DerSchatten im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 13.05.2011, 20:16
  2. PWM Frage und Interrupt mit Tasten?
    Von Enterprise im Forum C - Programmierung (GCC u.a.)
    Antworten: 24
    Letzter Beitrag: 31.03.2008, 17:16
  3. Pin change Interrupt und Tasten entprellen
    Von Razer im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 16.05.2006, 10:35
  4. Tasten bei RN-control abfragen
    Von christian87 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 26.01.2005, 22:09
  5. Tasten am Rn-Control wie abfragen
    Von FHarry im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 1
    Letzter Beitrag: 30.12.2004, 09:17

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen