Nieudane zmiany wartości OCR0A w PWM ATTiny2313 - co jest przyczyną?
PWM w ATTiny2313 - co robie zle?
From: Michal Wysocki <mwsoftWYTNIJTO_at_nospam_wlb.vectranet.pl>
Subject: PWM w ATTiny2313 - co robie zle?
Date: Sun, 20 Mar 2005 16:49:29 +0100
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...
--
pzdr
mw
From: Michal Wysocki <mwsoftWYTNIJTO_at_nospam_wlb.vectranet.pl>
Subject: Re: PWM w ATTiny2313 - co robie zle?
Date: Sun, 20 Mar 2005 17:07:25 +0100
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 :(