Interrupt bei Timer1 und OC1A Mode 15

Gast #5779280
Lesenswert?

Einen schönen guten Morgen,
folgendes ist gegeben:

Timer1 ist auf fast PWM eingestellt.
OC1A Mode 15 ist eingestellt
Tastenverhältnis auf 50%
Prescaler auf 1/8

PB.1 OC1A macht das was er soll. Jetzt wollte ich die Takte bei high 
verarbeiten doch bekomme ich beim ATMega88 kein Interrupt ausgelöst.
Man sagte mir ich müsste PB.1 auf einen INT0 oder INT1 legen und darüber 
arbeiten. Geht das wirklich nicht anders?
Gast #5779412
Lesenswert?

H.Joachim S. schrieb:
> Welcher Prozessor?
ATMega88
> Normalerweise ist Mode15 fast PWM mit Top=OCR1A. Wie willst du dann an
> PB1 ne PWM bekommen?

TCCR1A auf COM1A0 = Toggle OC1A
TCCR1A auf WGM11 + WGM10 = Fast PWM

TCCR1B auf WGM13 + WGM12
TCCR1B auf CS11 = 1/8

OCR1B auf 0x7FFF = Tastverhältnis 50%

Läuft auch gut! Nur möchte ich gerne auf das High an PB.1 reagieren.
PB.1 ist doch beim ATMega88 der OC1A. Doch kann ich mir nicht vorstellen 
dass ich, wie mir geraten wurde, diesen auf INT0 oder INT1 legen muss um 
reagieren zu können.
#5779458
Lesenswert?

Kann man das kombinieren (toggle on OCR1 und PWM OCR1B? Na gut, wenn es 
bei dir läuft.

Du willst also irgendwas ablaufen lassen, wenn PortB.1 H ist?
Eine Möglichkeit wäre der PCINT1, der löst allerdings bei beiden Flanken 
aus. Musst du dann in der ISR entscheiden.

PCICR=(0<<PCIE2) | (0<<PCIE1) | (1<<PCIE0);
PCMSK0=(0<<PCINT7) | (0<<PCINT6) | (0<<PCINT5) | (0<<PCINT4) | 
(0<<PCINT3) | (0<<PCINT2) | (1<<PCINT1) | (0<<PCINT0);
PCIFR=(0<<PCIF2) | (0<<PCIF1) | (1<<PCIF0);

interrupt [PC_INT0] void pin_change_isr0(void)
{
if (PINB.1)
   {
   }
}
Gast #5779636
Lesenswert?

Peter D. schrieb:
> Du kriegst an jeder Flanke einen OCF1A und TOV1 Interrupt. Also einfach
> einen davon nehmen und den Pin prüfen, ob er high ist.

ich wollte gerne einen der Interruptvectoren Benutzen.

Arno schrieb:
> Welchen Interrupt willst du denn auslösen? Overflow? Output Compare?
>
> MfG, Arno

Mir eigentlich egal, die Hauptsache ist das einer ausgelöst wird ob PB.1 
high ist werde ich ja herausbekommen oder?

H.Joachim S. schrieb:
> Eine Möglichkeit wäre der PCINT1

Genau sowas möchte ich ja nicht weil mir ein Pin flöten geht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren