Forum: Mikrocontroller und Digitale Elektronik Tasten entprellen Zeiterkennung am atmega164p


von Sven D. (posti)


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?

von Fred S. (Gast)


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

von Sven D. (posti)


Lesenswert?

Hallo,

also ich habe folgenden Code genommen:

http://www.mikrocontroller.net/attachment/12660/C_TAST.C

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

undeclared first use in this function.

von Fred S. (Gast)


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

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
Noch kein Account? Hier anmelden.