www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interupt mit CodeVision


Autor: Robert Nägele (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich arbeite mit dem CodeVision C Compiler und hab nun
verschiedene Programme schon geschrieben, die Typischen Lauflichter
eben. Denen habe ich nun hinzugefügt das man je nach Tastendruck (
PD0-PD3 ) ein anderes Lauflicht abläuft und zusätzlich an PD4-PD7 eine
Geschwindigkeit und eine Richung angegeben wird. Mich nervt nun
allerdings gewaltig das ich diese Tasten immer gedrückt halten muß.
Kann mir jemand sagen wie ich das Programmieren kann OHNE das ich dies
ständig tun muß ? Dazu kommt noch das ich keinerlei Ahnung habe wie ich
diese Tastenentprellung hinbekomme dabei und was oder wie sind
interupts. Kennt wer eine Seite mit einem einfachen Tutorial für den
C-Compiler ?

MFG ein verzweifelter Jungelektroniker

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in diesem Fall brauchst du nicht mal eine Entprellung und auch nicht
unbedingt Interrupts.
Welches Lauflicht nun abläuft, machst du vom Stand einer Variablen
abhängig und nicht vom Zustand deiner Taster.
Und wenn du nun noch eine Routine einfügst, die regelmässig die
Schalter abfragt, ist alles in Butter.

void programm_abfrage (void){
if (!PIND.0) Programm=0;
  else if (!PIND.1) Programm=1;
    else if (!PIND.2) Programm=2;
      else if (!PIND.3) Programm=3;
}
Der erste erkannte Tastendruck wird somit gespeichert, weitere haben
keinen Einfluss. Kritischer wirds, wenn du mit nur einem Taster
arbeiten willst und jeder Tastendruck dein Programm weiterschalten
soll. Dann musst du entprellen.
Wenn du dich gleich noch in die Interrupts einarbeiten möchtest, nimm
den Timer0, obiges Programm ist dann schon die fast vollständige
Timer0-ISR, dann brauchst du dich mehr im Hauptprogramm drum kümmern,
die Taster regelmässig abzufragen.

Autor: Robert Nägele (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Danke nur frage ich mich was das mit der Routine soll? Die wird doch
dann auch stetig abgefragt ? z.b. braucht mein Lauflicht max 50ms um
weiterzuschalten und zu prüfen wie die Tasten stehen. Wenn ich doch
dann wieder an der Überprüfung vorbeikomme läuft ja nachdem ich den
Finger abgesetzt habe gar nix mehr ? oder wie ?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da dein Programm fehlt, kann ich dir da auch nicht direkt weiterhelfen.
An irgendeiner Stelle musst du ja verzweigen, welches Programm abläuft.
Im Moment tust du das in Abhängigkeit der Tasten. Das schmeisst du raus
und verzweigst analog zu deinem alten Programm in Abhängigkeit vom
Zustand der Variablen "Programm". Steht es auf 0, wird das
1.Lauflichtprogramm ausgeführt, bei 1 das zweite usw.
Wenn du jetzt noch regelmässig "pogramm_abfrage" aufrufst, wird bei
gedrücktem Taster die Variable "Programm" geändert, dementsprechend
läuft dann dein Hauptprogramm anders.

Autor: Robert Nägele (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also nochmal :) Ich glaub ich war da etwas zu vorschnell.

Ich will 1. Das die Taster an PinD alle kontinuirlich geprüft werden.
Damit meine ich das Wenn ich den Taster drücke auch das Programm
gewechselt wird und nicht erst wenn ich aus dem einen Program eine
Abfrage starte. Dies geht soweit nur mit Interupts ? Und wenn ja dann
würde ich gerne wissen wie ich die Nutzen kann ?

Ich schicke hier mal noch im Anhang meine File mit auch wenn sie gerade
vom Compiler mit Errors zurückgewiesen wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.