Liste der Anhänge anzeigen (Anzahl: 2)
ungleichmäßge Pulslängen bei PWM mit TIMER1 auf mega8
Hallo da,
ich habe im Mega8 den Timer 1 so aufgesetzt, dass ich über Pin OC1A ein PWM bekomme.
Hier die Bitmuster:
Code:
TCCR1A |= (1<<COM1A1)|(1<<WGM11);
TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS10);
ICR1 = 1500;
OCR1A = 250;
Aus irgendeinem Grund erhalte ich ungleichmäßige Pulslängen. Sie Attechment.
Hat jemand eine Idee, woran das liegt?
Hab das auch schon auf zwei Controlern getestet.
mfg,
The Man
Re: ungleichmäßge Pulslängen bei PWM mit TIMER1 auf mega8
so funkts bei mir - zum testen
mfg
Code:
#define OC1A_PIN PB1 // OC1A pin (ATmega8 use PB1)
#define OC1A_DDR DDRB // OC1A DDR (ATmega8 use DDRB)
int main(void)
{
uint8_t i = 0;
// set OC1A pin as output, required for output toggling
OC1A_DDR |= (1<<OC1A_PIN);
// enable 8 bit PWM, select inverted PWM
TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0);
// timer1 running on 1/8MCU clock with clear timer/counter1 on Compare Match
// PWM frequency will be MCU clock / 8 / 510, e.g. with 8Mhz Crystal 1960 Hz.
TCCR1B = (1<<CS11) | (1<<CS10);
/*
* Dimm LED on and off in interval of 2.5 seconds
*/
for (;;)
{
/* dimm LED on */
for (i=0; i<255; i++)
{
OCR1AL = i;
_delay_ms(40); // delay 10 ms
}
/* dimm LED off */
for( i=255; i>0; i--)
{
OCR1AL = i;
_delay_ms(40); // delay 10 ms
}
}
}
Liste der Anhänge anzeigen (Anzahl: 1)
An den Resetpin hab ich nen Pullup gelötet und das ganze noch mal getestet.
Ich hab mal mit nem Oszi gemessen und an der Zeitbasis gedreht.
Im Attechment ist das Bild dazu. ich hoffe es ist nicht zu dunkel.
Das sieht nach nem systematischen Problem aus. Habe auch mal den Vorteiler des Timer erhöht aber das ist das gleiche in langsam.
Und wie gesagt, das Problem ist auf mehr als einem Controler.
Liste der Anhänge anzeigen (Anzahl: 1)
Re: gesagt,
Zitat:
Zitat von The Man
getan
=> Quotenbuchstaben<=