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
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.
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 ?
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.
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.
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.