Stránka 1 z 1

nastaveni registrů

Napsal: 27 pro 2013, 00:02
od apam
Dobrý den, neví někdo jak nastavit inverzní pwm signál proti tomuhle?

Kód: Vybrat vše

$regfile = "m8def.dat"
$crystal = 16000000
 
portb.1= output
Tccr1a = Bits(com1a1 , Com1b1 , Wgm11)
Tccr1b = Bits(wgm13 , Wgm12 , Cs11)
icr1 = 20000
Ocr1a = 500
 
Do
 
Loop
 
End


Důležitý je pro mě výstup 100Hz.
Děkuji za rady.

Napsal: 27 pro 2013, 10:47
od petrfilipi
Co to je inverzní PWM signál? Není možné ho vyrobit tranzistorem?
Nevím v čem je to napsáno, ale dělá takovýto program vůbec něco? Netočí se pořád donekonečna ve smyčce Do/Loop?
V programu je jen nějaké nastavení registrů ICR, OCR1A a časových/čítačových registrů. Ale neřekl bych, že to bude fungovat samo o sobě, bez přerušení. Ale možná ano.

Petr Filipi

Napsal: 27 pro 2013, 11:53
od nekmil
Kukni na příkaz "Config timer1"
např.

Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Down

"Clear Down" máme jednu polaritu PWM
"Clear Up" máme polaritu opačnou

Napsal: 27 pro 2013, 12:12
od apam
>petrfilipi- přidávat tranzistor, to je moc složité... fungovat to funguje..
už jsem na to přišel.
Koho to zajímá tak je to takto pro oba kanály a i b:

Kód: Vybrat vše

Tccr1a = Bits(com1a1 , Com1a0 , Com1b1 , Com1b0 , Wgm11)
Tccr1b = Bits(wgm13 , Wgm12 , Cs11)


>nekmil- s tím nastavením co jsi psal neudělám těch 100Hz na výstupu.

Díky za rady.

Napsal: 27 pro 2013, 12:19
od nekmil
Kmitočet PWM závisí na taktovacím kmitočtu a "Prescale = xx".
To co jsem uvedl byl jenom příklad.

a jde to i bez "závorek" viz "help"

Config Timer1 = Pwm , Pwm = 8 , Compare_A_Pwm = Clear_Up , Compare_B_Pwm = Clear_Down , Prescale = 1 :D