Nieudane zmiany wartości OCR0A w PWM ATTiny2313 - co jest przyczyną?

PWM w ATTiny2313 - co robie zle?





Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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 :(