Hallo! Ich bin gerade dabei, eine Frequenzzählungt mit einem PIC 12F675 mittels des internen Komparators zu realisieren. Es ist lediglich eine Unterscheidung zwischen 50Hz bzw. 51Hz notwendig. Dazu habe ich einen 220/12 Trafo, welchen ich auf der Sekundärseite mit einem Spannungsteiler belaste, damit ich am PIC etwa 3V(eff) habe. Die beiden Pole sind auf den Komparatoreingang geschaltet. Nun will ich als ersten Test einfach eine LED jede Sekunde mittels der Netzfrequenz toggeln. Der Code dazu ist unten angeführt. Nun hab ich das Problem, dass die LED so schnell schaltet, dass sie eigentlich nur "gedimmt" ist. Wenn ich für Count einen Wert von 10000 verwende, sind die Perioden der LED etwas länger als eine Sekunde. Ich hab schon einiges ausprobiert, verstehe aber nicht, warum die Interrupts des Komparators so häufig auftreten. Das sollte doch nur alle 10ms (bei einem Nulldurchgang) passieren. Ich würde mich freuen, wenn jemand eine Idee oder einen Hinweis hätte. Schönen Gruß, Steve CODE: #include <frequenz1.h> boolean on=false; int16 count; void init(); void led_off(); void led_on(); void led_toggle(); #int_COMP void COMP_isr() { count++; clear_interrupt(INT_COMP); } void main() { init(); while(true){ if(count>100) { count=0; led_toggle(); } } } void init() { setup_comparator(A0_A1); clear_interrupt(INT_COMP); enable_interrupts(INT_COMP); enable_interrupts(GLOBAL); count=0; } void led_off() { if(on) { output_low(PIN_A5); output_low(PIN_A2); on=false; } } void led_on() { if(!on) { output_low(PIN_A5); output_high(PIN_A2); on=true; } } void led_toggle() { if(on) led_off(); else led_on(); }
Ein Comparator hat keine ST-Eingänge, daher hast Du kurz vor und kurz nach dem Nulldurchgang Zeiten, in denen der Comparator "zappelt". Leg COUT mal an einen Oszi, dann siehst Du das. Workaround: Bau in die ISR eine Verzögerung ein.
Besten Dank für deine Antwort! Konnte damit den Fehler beheben!
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.