Hallo,
Ik probeer een phase/frequentie correcte blokgolf te genereren door gebruik te maken van timer3 op een atmega128. Als simulatie omgeving gebruik ik VMLAB.
Onderstaande code resulteert niet in de gewenste blokgolf, PE3 blijft hoog. Ik kan niet vinden waar het fout gaat. Ik vermoed dat er een bug in VMLAB zit (TCCR3B |= (1<<WGM33) blijkt geen effect te hebben??)
Heeft iemand ervaring met timer3 PWM op een atmega128? Ligt het aan VMLAB, of gaat het fout in de code? (Heb zelf geen atmega128 en scoop liggen om het te testen)
//OCR3A at PE3, configure as output which is initially zero
DDRE |= (1<<3);
PORTE &= ~(1<<3);
// Select waveform generation mode 8
TCCR3B |= (1<<WGM33);
//timer top=125 --> pwm with frequency of 8kHz @ FCPU=2MHz
ICR3 = 125;
// duty cycle 50%
OCR3A = 62;
// Set OC3A when upcounting, clear when downcounting when match with OCR3A
TCCR3A = (1<<COM3A1) | (1<<COM3A0);
// Start timer3 with prescaler 1
TCCR3B |= (1<<CS30);
@RES, wanneer ik je lijntje code toevoeg krijg ik een waveform. OCR3A laat toe de duty cycle te bepalen, echter ICR3 heeft geen invloed op de topwaarde (uit de waveform leid ik af dat deze 255 is).
Ik wil beide (duty cycle en frequentie) in kunnen stellen