PWM w ATTiny2313 - co robie zle?

Mar 20, 2005 1 Replies

witam



mam problem z odpaleniem PWM w tiny2313 ...



Ustawiam T0 w trybie FastPWM, wylaczam wszystkie przerwania, ustawiam poczatkowa wartosc OCR0A na 192 i ok - na wyjsciu mam przebieg z wypelnieniem 75%



ale gdy zmienie wartosc OCR0A po pierwszeym przepelnieniu licznika - jest to ignorowane totalnie... moge sobie dowolnie zmieniac wartosc, a i tak na wyjsciu mam ciagle poczatkowe ustawienie... ;/



co robie zle?? wiem ze rejestry OCRxx sa buforowane i wg. noty wartosc jest przepisywana z bufora do rejestru gdy licznik sie przepelni, ale to raczej nie ma nic wspolnego... cokolwiek nie zapisze do OCRxx - dalej mam wartosc poczatkowa na wyjsciu



przeczytalem juz z 10 razy rozdzial o licznikach w datasheecie i nadal nie wiem gdzie jest haczyk ;/



z 16bitowym timerem jest to samo - wartosc na wyjsciu nie zmienia sie, mimo zapisywania roznych wartosci do OCR1A



help i z gory dzieki...


moze jeszcze kod dorzuce

#define __AVR_ATtiny2313__ #include <avr/io.h>

#include <avr/sfr_defs.h>

void Delay(unsigned char ms);

int main() { unsigned char x = 0; unsigned short y = 0; DDRD = 0xFF; DDRB = 0xFF; WDTCSR = 0; TCCR1A = BV(COM1A1) | BV(COM1A0) | BV(COM1B1) | BV(COM1B0) | BV(WGM10); TCCR1B = BV(WGM12) | BV(CS01); TCCR1C = 0;

TIMSK = 0; cbi(SREG, SREG_I);

OCR1A = 0x80;

while(1) { Delay(100); OCR1A = 0x10; Delay(100); OCR1A = 0xF0; } }

Na wyjsciu mam caly czas 50% (0x80), wartosci z petli sa ignorowane :(

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required