Willkommen im Forum,
Hast du einen Code den du posten kannst? Aber mit den codetags.
Eigentlich sollte sich das mit delays lösen lassen (ist aber nicht elegant).
MfG Hannes
Hallo Leute!
Ich bin neu im C und AVR und gerade spiele ich mit ein Attiny85.
Ich Habe eine Grundlage im C aber nun bin ich noch immer ein Neuling dabei.
Ich möchte euch gerne fragen ob jemand mir helfen könnte eine simple
debounce routine schreiben in C ? ich kann sehen am mein Oszilloskop
das ich ein bouncing Problem habe aber ich kann nicht erstmal die
erste schritte machen.
Was ich probiert habe bis jetzt ist im Eimer, alles was ich gemacht habe
wahr etwas mit _delay_ms_() nun das bringt nichts...
Habe auch nach irgend ein debounce routine gesucht für Beginners aber
auch ohne erfolg...
Wielen dank führ jede Hilfe.
Willkommen im Forum,
Hast du einen Code den du posten kannst? Aber mit den codetags.
Eigentlich sollte sich das mit delays lösen lassen (ist aber nicht elegant).
MfG Hannes
Ich habe es leider nach 3-4 Tagen spielen gelöscht, aber es wahr so etwas:
Ich wollte etwas wie bei Bascom das Debounce ist.Code:#define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> int counter = 0; int main(void) { DDRB &=~(1<<PINB0); while(1) { if ((PINB & (1<<PINB0))) { _delay_ms(30); if ((PINB & (1<<PINB0))) { counter++; } } } }
Leider comme ich von Bascom nach C und daher kenne ich wie es im Bascom ging.
In C habe ich nicht Programmiert zeit die Schule, es ist ~20 Jahren.
Damals habe ich auch nicht mit AVR gespielt.
Zwar nicht C, aber da kann man bestimmt ein bisschen was rauslesen. Zusammen mit Deinen Basickenntnissen sollte das doch klappen ! ?.. bin neu im C und AVR und gerade spiele ich mit ein Attiny85 .. eine simple debounce routine schreiben in C ..
http://rn-wissen.de/wiki/index.php?t...R_in_Assembler
Ciao sagt der JoeamBerg
Hallo Chrisa schau mal hier, vielleicht hilft es Dir weiter:
https://www.roboternetz.de/community...866#post643866
Siro
Uff Leute!
Wielen dank!
Ihr habt mir viel geholfen.
Ich glaube ich kann schon was rausholen...
Also, ist 20 mS genug zum prüfen ob die Taster noch immer bounct?
Melde mich wenn ich irgendwo Hängen bleib!
Wielen dank!
Leute!
Sache beendet.
Alles funkt und mein Programm fahrt sehr gut, dank euch.
Falls jemand den code braucht hier ist es:
Man kann es auch etwas tunen, aber es funkt auch so sehr schon.Code:#include <avr/io.h> int counter = 0; // Irgend ein zähler, musst nicht integriert sein int PB1_Counter = 0; // Bouncing zähler int Debounce = 50; // Bouncing zeit int main(void) { DDRB &=~(1<<PINB1) ; while(1) { if ((PINB & (1<<PINB1))) { PB1_Counter++; if (PB1_Counter==Debounce) { counter++; // Wenn PINB1 gedrückt ist geht dieses programm. } } else { PB1_Counter = 0; }
Gerade getestet.
Lesezeichen