PWM nastavenie urovne TOP

Zdravim. nedari sa mi rozchodit PWM modulaciu sietoveho napatia. Poradte mi prosim co mam inak nastavit aby mi fungoval TOP pre citac, pretoze nech robim co chcem pocita mi len do 0x01FF a spat.
Dakujem

kod ktory neviem preco nefunguje:

[code]/XTAL = 3.6864MHz
//ATMEGA8
#include<avr/io.h>

int main(void)
{
DDRB=0xFF;
OCR1A=1500;
OCR1B=1500;
ICR1=4608; //perioda PWM 0.1s f=fxtal/N*TOP N=8
TCCR1A|=(0<<COM1A0)|(1<<COM1A1)|(0<<COM1B0)|(1<<COM1B1)|(1<<WGM11)|(0<<WGM10);

TCCR1B|=(0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(0<<CS10);
while(1){
asm volatile(“nop\n”);
}
}
[/code]

Podívej se na “Table 39 Waveform generation…” v datašítu.
Tam zjistíš, že máš nastavený mód 15, ve kterém TOP = OCR1A.
Nastav mód 14. (Mód určují bity WGM.)

Zkoušel jsi to na HW? Nastavení by mělo být správně ale v simulátoru to počítá “PWM, Phase Correct, 9-bit” jako by to ignorovalo nastavení TCCR1B registru. Vyzkoušet TOP si můžeš např. tak, že vytvoříš přerušení od čítače, v něm budeš měnit stav pinu a zvenku si změříš/odposlechneš/okoukáš frekvenci.

WGM13:1 = 1 => mode 14, Fast PWM, TOP=ICR1

AB: má nastaven mód 14
Zápis (0<<WGM10) je sice zbycečný, ale “1” do WGM10 nedá.

A hned se musím opravit.
Mód máš dobře.

no to ma podrz. na HW som to este neskusal, hned ked budem mat cas otestujem. Je to naozaj divne ze to nejde v simulacii. skoda:(.
Myslel som ze vystup mozem odoberat na pine PB5(OC1A) bez toho aby som nieco robil v preruseni, ak nie opravte ma.
A na osciloskope uz si pozriem a odmeriam dlzku periody.

viem ze zapis (0<<WGM10) je zbytocny ja som len ten kod kdesi okopcil a nechal som to tam pre nazornost a moznu lahku zmenu na jednotku.

Přerušení nepotřebuješ pokud máš osciloskop. Ten nápad s přerušením byl pro případ, že bys ho neměl a chtěl si nějak jednoduše zkusit, jesli TOP čítače alespoň zhruba odpovídá.
Že něco nejde v simulátoru a v reálu to pracuje správně se mi už nejednou stalo. Tvůj program jsem ovšem na HW nezkoušel - nemám po ruce snadno připojitelnou megu8.

Zkoušel jsem kód v reálu s M88 a chodí.
Určitě půjde i s M8.
Simulátor1 v avrstudiu neukazuje dobře.
V simulátoru2 to funguje ale zase v něm není Mega8.

Vůbec se divím proč se snažit všechno simulovat.
Není jednodušší vyzkoušet v reálu?
Na zkoušku dám předdělič 1024 a ledka na výstupu krásně bliká.

diky moc za odskusanie:)
jednoduchsie je isto si to odsimulovat pretoze to mozem urobit hocikde kde mam notebook a na vyskusanie v real svete musim byt doma a mat potrebne vybavenie. Ale zas na druhu stranu je zas mas pravdu ty lebo nie je nad to vidiet to v reali a samozrejme nikdy nepojde vsetko v simulacii tak ako v reali.