PWM v PIC12F683 & Proteus - chybná funkce?

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

PWM v PIC12F683 & Proteus - chybná funkce?

#1 Příspěvek od masar »

Potřeboval bych vysvětlit problém, se kterým jsem se setkal při simulaci PWM s použitím CCP modulu v PIC12F683 nebo PIC12F615 v simulátoru Proteus.
Vlastností modulu CCP v režimu PWM by měl být tzv. double buffering, tzn. že zápis hodnoty duty cycle do registru CCPR1L může být proveden kdykoliv (alespoň jak jsem pochopil), jeho přepis do CCPR1H se provede až na konci periody cyklu PWM.
Ovšem v simulátoru Proteus se při zápisu do CCPR1L ihned nuluje stav výstupního pinu CCP1, pokud již byl nastaven.
Narazil jsem na to při testování programu od p. Belzy, který je jistě vyzkoušený a funkční.
Ale v Proteusu nefunguje s žádným z uvedených MCU.
Při simulaci podobného řízení s jinými MCU (např. PIC16F628) k uvedenému jevu nedochází a zápis do CCPR1L se provede bez vlivu na stav výstupního pinu.
Otázka je prostá: Je chyba ve mně nebo v Proteusu?
Díky za každou odpověď. :wink:
Ještě pro úplnost část kódu (ASM), kde je problém:

Kód: Vybrat vše

; AD převod
	bsf 	ADCON0,GO		;start AD převodu - trvá 48 Tcy
	btfsc	ADCON0,GO		;done/hotovo?
	goto	$-1
	clrwdt
	movfw	ADRESH		;

; Linear - Quadratic mode test
	btfsc	LINQ			;lin/q pin test
	goto	quadratic

; Lineary mode
linear
	movwf	CCPR1L			;set MSB bits PWM (duty-cycle = ADRESH) 
V tomto okamžiku se nuluje nastavený výstup PWM

Kód: Vybrat vše

	movlw	00ch
	movwf	CCP1CON			;clear LSB bits
	goto	testend

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#2 Příspěvek od frpr666 »

Je otázka jak flexibilně reaguje výrobce softwarového simulátoru na to, že Microchip vydá nový PIC s novou periferií.
Dříve nebo později stejně dojde na to, že je třeba vytáhnout osciloskop a podívat se na realitu.

masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

#3 Příspěvek od masar »

Nemyslím, že je to otázka flexibility. Jen tohle fórum zná PIC12F683 minimálně od r.2007.
Kromě toho, jaký by mělo smysl software, který nelze simulovat, testovat v reálu? Je možné, že pan Belza odsimuloval soft v jiném simulátoru, než Proteus. Nejde mi o funkčnost programu, ale o funkčnost simulátoru, pokud ovšem není chyba někde na mé straně.
:wink:

Uživatelský avatar
teufel
Příspěvky: 355
Registrován: 09 úno 2017, 01:00
Bydliště: Na dohled od Spolany

#4 Příspěvek od teufel »

Napsal jsem to v asembleru v MPLab IDE (ještě v tom bez X), nahrál do mikrokontroléru, vyzkoušel, opravil program a znova nahrál... Už si nepamatuji, na kolik iterací se to povedlo. Moc jich nebylo, tak do desítky. Víc jsem se "vyblbnul" na digitální filtraci výstupu AD převodníku, kterou jsem do PWM regulátoru dodatečně dodělal - ta ale není součástí programu, co mám na webu.

masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

#5 Příspěvek od masar »

Znamená to tedy, že je chyba v simulátoru? Nemůže být "zakopaný pes" v nějakém konfiguračním nastavení? MPLAB jsem nezkoušel, ale znovu říkám - nejde mi o funkčnost (odladění) programu, ale o odhalení, proč mi to v Proteusu nefunguje.
:wink:
Pro názornost přikládám animaci krokování:
Obrázek

Odpovědět

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