Gast
#177789
Moin Moin
Ich wollte mir dieses Wochenende ein eher einfaches Projekt vornehmen
doch leider läuft ja nicht immer alles so wie man sich das gedacht
hat...
Ich bin dabei einen Drehzahlmesser für eine Modellturbine zu bauen. Die
Drehzahl soll dabei durch eine Lichtschranke ermittelt werden.
Nun soll der Interrupt0 die Impulse der Lichtschranke zählen. Jede
Sekunde soll dann ein Compare-Interrupt überlaufen und die aktuelle
Drehzahl über die Serielle-Schnittstelle ausgeben. Eigentlich ganz
simpel....
Doch leider funktioniert nicht alles so wie ich mir das gedacht habe.
Der Compare-Interrupt löst wirklich jede Sekunde aus und auch der
Interrupt0 funktioniert doch wenn ich die Lichtschranke auf meine
Schreibtischlampe richte bekomme ich folgende Werte ausgegeben...
126; 121; 119; 117; 120; 118; 116; 132; 120;
Das Signal das am Int0 anliegt hat aber wirklich 50Hz (Oszi). Woran
liegt es, dass die Werte so stark schwanken und warum liegen die Werte
nicht ungefähr bei 50 ???
und noch ein Codeschnipsel...
//Compare-Interrupt (1Sekunde)
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
GIMSK = (0<<INT0); //Interrupt0 deaktiv
UDR = count; //count über rs232 ausgeben
count = 0; //count zurücksetzen
GIMSK = (1<<INT0); //Interrupt0 aktiv
}
//Interrupt0 (rising edge)
SIGNAL(SIG_INTERRUPT0)
{
count++;
}
Gruß
Timo O.