Mikrocontroller: Atmega2561 Programmierung: AVR-Studio 4.19, Build 730 mit AVR Toolchain Ich erzeuge mit dem Timer0 ein PWM-Signal, das am OC0B-Pin ausgegeben wird. Initialisiert wird das TCC0RA-Register wie folgt TCCR0A |= ((1<<COM0B1)|(0<<COM0B0)|(0<<WGM01)|(1<<WGM00)); Das PWM-Signal wird über Int0 gestartet: ISR(INT0_vect) { TCCR0B |= ((0<<CS02)|(0<<CS01)|(1<<CS00)); return; } Und mit Int1 beendet: ISR(INT1_vect) { TCCR0A = 0; ?????? TCCR0B = 0; OCR0B = 0; PORTG = 0; return; } Nach dem Stoppen des PWM-Signals soll der PWM-Ausgabe-Pin definiert auf LOW liegen, daher wird der G-Port insgesamt auf 0 gesetzt. In der Simulation funktioniert das Ganze problemlos. In der Schaltung tritt das Problem auf, daß der OC0B-Pin nach Verlassen des Interrupt1 ständig auf HIGH liegt. Erst wenn ich die Zeile „TCCR0A = 0“ in INT1_vect einfüge funktioniert das auch in der Realität. Ist das Verhalten normal, oder muß ich mich auf intensivere Fehlersuche begeben?
@ Visitor (Gast) >In der Schaltung tritt das Problem auf, daß der OC0B-Pin nach Verlassen >des Interrupt1 ständig auf HIGH liegt. Erst wenn ich die Zeile >„TCCR0A = 0“ in INT1_vect einfüge funktioniert das auch in der Realität. >Ist das Verhalten normal, Ja. Denn damit wir das Pin wieder von der PWM abgekoppelt und als normaler IO-Pin steuerbar. >oder muß ich mich auf intensivere Fehlersuche >begeben? Nö.
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.