Tasten entprellen Zeiterkennung am atmega164p

OP #871439
Lesenswert?

Hallo,

ich versuche am atmega164p die Tasten zu entprellen mit Zeiterkennung 
(long..short).
Die Beispiele hab ich mir im Forum bereits angeschaut, aber 
funktionieren bei mir irgendwie nicht.

Funktionieren tut aber:
1
    if(bit_is_set(PIND, 2))
2
    {  
3
    loop_until_bit_is_clear(PIND, 2);
4
    starte_funktion();
5
    }


Kann mir da jemand auf die Sprünge helfen, was beim atmega164p anders 
ist?
Gast #871470
Lesenswert?

Hi,

Dein Code (für Code-Abschnitte übrigens nur
1
[c] ANFANG
2
und ENDE [/c]
) ist die "intuitive/naive" Version, die auf Prellen keine Rücksicht 
nimmt.

> aber funktionieren bei mir irgendwie nicht.
Du musst uns schon genau wissen lassen, welcher Code wo und wie 
nicht funktioniert (Code ins Posting kopieren, wenn er länger ist als 
Anlage anhängen, genaue Fehlerbeschreibung). Hast Du den Code von einem 
anderen Prozessor auf den ATmega164p portiert? Gibt es 
Compiler-Warnungen?

Gruß

Fred
Gast #871521
Lesenswert?

Hi Sven,
> Allerdings kam schon mal als Compilerfehler (kein warning) im Code:
>
1
>   TCCR0 = 1<<CS02;        // divide by 256 * 256
2
>   TIMSK = 1<<TOIE0;        // enable timer interrupt
3
>
> undeclared first use in this function.
Kein Wunder: Du musst schon dafür sorgen, dass ein Programm auch auf 
Deinem spezifischen Prozessor lauffähig ist! Beim ATmega164p gibt es 
kein SFR "TIMSK", sondern mehrere TIMSKx-Register.

Also: Versuche den Code (insbesondere die Verwendung der Timer) zu 
verstehen; dann portiere den Code auf den Prozessor, auf dem er laufen 
soll.

Gruß

Fred

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren