nastaveni registrů

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

nastaveni registrů

#1 Příspěvek 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.
petrfilipi
Příspěvky: 2901
Registrován: 13 zář 2005, 00:00

#2 Příspěvek 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
Uživatelský avatar
nekmil
Příspěvky: 787
Registrován: 06 bře 2005, 00:00
Bydliště: Havířov

#3 Příspěvek 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
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#4 Příspěvek 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.
Uživatelský avatar
nekmil
Příspěvky: 787
Registrován: 06 bře 2005, 00:00
Bydliště: Havířov

#5 Příspěvek 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
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“