Forum: Mikrocontroller und Digitale Elektronik Modulation der Impulsweite einer eingelesenen Frequenz


von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ich habe ein Problem bei der Programmierung meines atmega48.
Mit einem Frequenzgenerator lese ich eine Frequenz ein und gebe diese 
wieder moduliert an einem Pin aus. Mit einem Oszi überprüfe ich die 
Ausgabe.

Das Problem ist, dass das längere LOW-Signal, dass an PORTB PIN2 gewählt 
werden kann, nicht kontinuierlich ausgegeben wird.
Jeder dritte LOW-Pegel ist nur ca. 1/4 so lang, wie er eig sein sollte.
Ich hoffe ihr könnt mir weiterhelfen. Der Code befindet sich im Anhang.

Viele Grüße!!
von spess53 (Gast)


Lesenswert?

Hi

TIMSK0 |= (0<<OCIE0A);

Was soll das bewirken?

0|0 = 0
1|0 = 1

MfG Spess
von Tim (Gast)


Lesenswert?

Hi! Danke für deine Antwort!

Ich will damit den aktivierten Interrupt(TIMER1_CAPT_vect) wieder 
deaktivieren. Sonst würde sich mein LOW-Signal wieder einschalten, wenn 
die TIMER1_CAPT_vect ISR aufgerufen werden würde. Anders würde dies zu 
früh passieren, da der Interrupt davor aktiviert ist.
Liege ich damit falsch?

lg
von J.-u. G. (juwe)


Lesenswert?

Tim schrieb:
> Ich will damit den aktivierten Interrupt(TIMER1_CAPT_vect) wieder
> deaktivieren.

Dafür ist die Anweisung

> TIMSK0 |= (0<<OCIE0A);

aber ungeeignet. Warum, hat Spess ja bereits dargelegt.

Wie man ein Bit setzt bzw. löscht:
http://www.mikrocontroller.net/articles/Bitmanipulation
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.