forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC16f690 4-bit LCD + PWM na spolocnom porte
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 18 březen 2016, 15:23    Předmět: PIC16f690 4-bit LCD + PWM na spolocnom porte Citovat

Zdravim,
k PIC16f690 mam LCD pripojene k RC0-RC3 a na RC4 mam PWM vystup.

Odoslanie dat na displej je nasledovne:
MOVLW hodnota
MOVWF PORTC ;spodne 4 bity
SWAP W
MOVWF PORTC ;horne 4 bity

Problem je ze odoslanim obsahu W na PORTC si rozhasim PWM ktore je na RC4 (nakolko W posielam na cely port C).
Realne nepotrebujem posielat W na cely PORTC, stacia mi iba aktualne 4 bity poslat na RC0-RC3 a zvysok potru neovplyvnovat, len nejak neviem ako na to.
Ma niekto nejaky navrh ako to vyriesit (alebo ako to spravne ma byt) bez nutnosti zmeny zapojenia?
Vdaka.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 887
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 18 březen 2016, 17:10    Předmět: Citovat

cau
citace:
Problem je ze odoslanim obsahu W na PORTC si rozhasim PWM ktore je na RC4 (nakolko W posielam na cely port C).
ses si jistej ?
_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
elc
Přispěvatel
Přispěvatel


Založen: 11.10.2008
Příspěvky: 22
Bydliště: Poprad-Slovensko

PříspěvekZaslal: 18 březen 2016, 18:18    Předmět: PIC16f690 4-bit LCD + PWM na spolocnom porte Citovat

Zdravím,
samozrejme, ak to robíte tak, ako to popisujete, je veľmi možné, že niekedy si prepíšete stav bitu RC4, záleží, aký je skutočný výstup z PWM a či sa 4-tý bit vo W registri rovná RC4, alebo nie.
Myslím, že by bolo vhodné, pred tým, ak niečo zapíšete na port C testovať stav bitu RC4 (môže sa použiť inštrukcia btss, alebo btsc) a podľa stavu RC4 nahodiť, alebo zhodiť 4-tý bit vo W registri a potom ho poslať na port inštrukciou MOVWF PORTC.
Druhá možnosť je, že pred zápisom na port otestujete stav bitu RC4 a po zápise na port nastavíte, alebo zhodíte bit RC4 inštrukciou BSF PORTC,4; resp. BCF PORTC,4.
Teda skrátka a dobre musíte po zápise na LCD zachovať stav bitu RC4, potom Vám komunikácia s LCD nebude ovplyvňovať PWM. Neviem, ako máte robenú PWM, ale musíte rátať s tým, že použitím týchto "nadbytočných" inštrukcií sa máličko môže pozmeniť časovanie PWM.
Prajem Vám veľa úspechov. Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 18 březen 2016, 18:26    Předmět: Citovat

Nastavuj postupně bity RC0-RC3 po jednom, bez ovlinění ostatních. Nebo to snad PICy neumí ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 107

PříspěvekZaslal: 18 březen 2016, 21:35    Předmět: Citovat

1. Trochu málo údajů - nevidím tu jak program, tak ani informaci, na jakém taktu/frekvenci je to celé provozováno (jak MCU, tak PWM)

2. Možná se hodí vědět informaci, že MCU interně provádí zápis na pin tím způsobem, že pokud obdrží tuto instrukci (zápis na jeden pin) tak vezme stav celého portu, změní obsah toho konkrétního bitu a zase celý port zapíše zpátky. Na první pohled to nepůsobí nijak divně, ale když tohle člověk ví a trochu se nad tím zamyslí tak mu dojde, že pokud nechá dvě hw jednotky ve stejném čase navzájem se přetahovat o jeden port, tak to prostě dobrotu dělat nebude (jedna jednotka je MCU core, druhá PWM modul/čítač/časovač) => Přesuň display na jiný port.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 18 březen 2016, 22:23    Předmět: Citovat

Mahoney napsal:
2. Možná se hodí vědět informaci, že MCU interně provádí zápis na pin tím způsobem, že pokud obdrží tuto instrukci (zápis na jeden pin) tak vezme stav celého portu, změní obsah toho konkrétního bitu a zase celý port zapíše zpátky. Na první pohled to nepůsobí nijak divně, ale když tohle člověk ví a trochu se nad tím zamyslí tak mu dojde, že pokud nechá dvě hw jednotky ve stejném čase navzájem se přetahovat o jeden port, tak to prostě dobrotu dělat nebude (jedna jednotka je MCU core, druhá PWM modul/čítač/časovač) => Přesuň display na jiný port.


Chceš tím říct, že když napíšu RC0 = 1; nebo RC0 = 0; (případně PORTC |= (1<<RC0); nebo PORTC &= ~(1<<RC0); ) a na RC4 je aktivní HW generátor PWM, tak je to problém ? Přeci pokud MCU začne vykonávat tuto instrukci (i když pracuje s celým portem), tak k tomuto portu po dobu celé operace PWM modul nepustí, ne ? Na druhou stranu - není to tak, že PWM jednotka interně odpojí pin od výstupního registru (PORTC) a převezme řízení tohoto pinu sama ? Pak by bylo úplně jedno, co se na daný pin příkazem PORTC = XXX zapíše. PWM pin to neovlivní.

A ještě něco :
Mahoney napsal:
... MCU interně provádí zápis na pin tím způsobem, že pokud obdrží tuto instrukci (zápis na jeden pin) tak vezme stav celého portu, změní obsah toho konkrétního bitu a zase celý port zapíše zpátky. ...


To dělá PIC, když dostane ASM instrukci pro změnu pinu interně nebo to tak jenom překládá C do ASM ? V tom je veliký rozdíl.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 107

PříspěvekZaslal: 18 březen 2016, 22:51    Předmět: Citovat

0. Není potřeba citovat některé mé věty hned dvakrát

1. A ty víš jistě že mluví o hardwarovém PWM? Mluvil jsem o něm já, ale na mě nesejde, pořád nemáme potvrzeno, co přesně tu vlastně řešíme (proto jsem předtím zvolil pořadí těch odpovědí tak, jak jsem jej zvolil).

2. Čemu přesně nerozumíš na slovním spojení „MCU interně provádí…”?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 18 březen 2016, 23:29    Předmět: Re: PIC16f690 4-bit LCD + PWM na spolocnom porte Citovat

To Mahoney: ad 2) Nechtěl jsem se Tě dotknout - nebylo to myšleno nějak zle, ale už jsem se s tím setkal, že (jak píšeš) "mcu interně provádí" znamenalo "překladač to překládá jako ...". Proto jsem se ptal. Ale je faktem, že to vzniklo tím, že jsem si úvodní Dybbukův dotaz nepřečetl úplně pozorně. Pak bych tam nepsal o C-čku, zůstal bych v assembleru a nevzniklo by tohle nedorozumění.


Jinak :
Dybbuk napsal:
Realne nepotrebujem posielat W na cely PORTC, stacia mi iba aktualne 4 bity poslat na RC0-RC3 a zvysok potru neovplyvnovat, len nejak neviem ako na to.


Tohle jsem měl na mysli, jak udělat (třeba i bit po bitu na 4 krát). Jestli Dybbuk měl na mysli HW PWM modul nevím - PICy neznám. Kdo je zná, by to mohl odvodit od umístění signálu na portu. Pokud se generuje HW, pak by snad mělo být úplně jedno, co na bránu zapíšu, pokud HW PWM jednotka přebírá kontrolu na pinem (opět bude vědět PICař). Takže poradit Dybbukovi :

Procesory rodiny 8051:
setb P3.0 (nastavení bitu 0 brány 3) - Set Bit P3.0
jbc P3.0, $+1 (vymazání bitu 0 brány 3) - Jump if Bit is set and Clear bit P3.0, skok na následující instrukci.

Procesory AVR:
sbi PORTC, 0 (nastavení bitu 0 brány C)
cbi PORTC, 0 (vymazání bitu 0 brány C)

Procesory PIC:
???
???


Prostě něco, co neovlivní ostatní bity.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 107

PříspěvekZaslal: 19 březen 2016, 10:08    Předmět: Citovat

V pohodě, nic se neděje. Obvykle to dělá opravdu PIC uvnitř, protože na výstupu je jako poslední (většinou) latch - ale sám jsem se tady něco přiučil, protože jsem se podíval do datasheetu tohoto konkrétního brouka na ten konkrétní vývod a zrovna u tady to tak není (tedy na tom zmiňovaném vývodu), na konci je MUX a PWM modul si opravdu převezme kontrolu nad pinem úplně (takže by to mělo fungovat tak jak jsi psal a mělo by to být v případě HW PWM jedno). Je to nějaký „extra special” PWM brouk, umí řídit i full bridge můstek, doteď jsem ho neznal.

S tím zapisováním po jednotlivých bitech - ono by to určitě šlo, ale bude to mít jistou časovou režii, a to jsme opět u toho programu a konfigurace PICu zpátky, protože nevíme co všechno a jak u toho dělá, takže nedokážeme přesně posoudit, jestli by to v konkrétním případě vadilo nebo ne. Jinak teda zajímavá myšlenka, akorát mě osobně to tedy svádí k tomu že „když už bit-banging, tak pořádně” a přilepil bych si k tomu ještě posuvný registr. Zkusit to ale může samozřejmě i bez něj.

Každopádně bez programu stejně nepoznáme kde je chyba, v podstatě neznáme ani účel. To mě vždycky v diskusích překvapí - embedded world je o tom, že stavíme věci. Konkrétní věci ke konkrétnímu účelu a k tomu, aby nám ty věci pomáhaly ve specifických oblastech - ovšem tazatelé co chtějí radu ve fóru s tímto obecně dělají doslova strašné tajnosti, vymámit z nich co přesně se vlastně řeší je mnohdy nadlidský úkol. Jak chceš ale radit konkrétně, když máš jen obecný popis a nevíš, co ta věc má vlastně ve finále dělat… (to není osobně k tobě, to jen tak debatíme). V podstatě ani nevíme, jestli něco staví sám a nebo upravuje už nějaké existující zařízení (čili jestli má např. možnost měnit zapojení nebo ne apod).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
JohnBoss
Přispěvatel
Přispěvatel


Založen: 18.1.2016
Příspěvky: 22

PříspěvekZaslal: 19 březen 2016, 13:09    Předmět: Citovat

U PIC18F při HW PWM nemá zápis na PWM výstup žádný vliv. PWM je odpojen od výstupních PORTx a LATx, ale je připojen na vstupní a čte PORTx.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 19 březen 2016, 22:59    Předmět: Citovat

Zdravim, vdaka za vsetky odpovede, da sa povedat ze ste mi pomohli, takze momentalne vyskusam nasledovne:
1. skusim data poslat postupne bit po bite na RC0-RC3, avsak obavam sa ze to LCD nespracuje
2. asi sa teda vyberem cestou presunu LCD na iny port
Co sa tyka HW vs. SW PWM, tak v tom nemam celkom jasno zatial, uvitam nejaky strucny koment ohladom toho aky je medzi nimy rozdiel u PIC, pripadne si to vygooglim potom niekedy, co sa môjho riesenia tyka, tak to mam nasledovne:
- frekvencia do PR2
- dlzka log.1 do CCPR1L:CCP1CON
- PWM mod tiez do CCP1CON
- timer preddelicka do T2CON
- a BSF T2CON, TMR2ON ;Start PWM

Cize asi SW PWM..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 887
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 20 březen 2016, 9:11    Předmět: Citovat

kdyby jsi sem dal kod bylo by to lepsi ale mas HW PWM,
nech to jak to mas a vyskousej to , podle me nebude mit vliv zapis na portc na HW PWM , na 690 to nemam vyskouseny ale na 628a ano,tam s tim neni problem

nevim proc by LCD nesprecoval nastavovani bitu po sobe , stejne si je cte az po tiku na E....

HW PWM : nastavis si casovac + modul CCP na PWM rezim a pak jen zapisujes hodnotu do registru pro zmenu stridy pwmka kdyz je treba

SW PWM:nastavis si casovac a v preruseni si pocitas hodnotu stridy a porovnavas ji s pozadovanou hodnotou stridy a podle toho si nastavujes vystupni pin

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 21 březen 2016, 16:02    Předmět: Citovat

MiloPS3 napsal:
nech to jak to mas a vyskousej to , podle me nebude mit vliv zapis na portc na HW PWM , na 690 to nemam vyskouseny ale na 628a ano,tam s tim neni problem

Ked to budem mat fyzicky zapojene, svacnem to na osciloskop, zatial som to testoval v dvoch simulatoroch. V jednom mal zapis na port vplyv na PWM, v druhom nie. Mne ale prislo prirodzene ze nastava problem z rovnakeho dovodu ako pisal Mahoney. Avsak to co pisu Balů a JohnBoss dava velky zmysel, takze chce to jednoznacne realny test. Dam vediet.
MiloPS3 napsal:
nevim proc by LCD nesprecoval nastavovani bitu po sobe , stejne si je cte az po tiku na E....

Mas pravdu, spracuje, moju spravu som napisal skor ako som sa nad tym hlbsie zamyslel.

Ak by som v niecom este nemal jasno, tak vystruham nejak ten kod do zverejnitelnej podoby a poslem. Momentalne to je prilis dlhe, komplikovane a neupratane.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Dybbuk
Přispěvatel
Přispěvatel


Založen: 18.3.2016
Příspěvky: 28

PříspěvekZaslal: 22 březen 2016, 22:35    Předmět: Citovat

Takze po realnom zapojeni a odskusani a kontrole osciloskopom potvrdzujem ze zapis na LCD neovplyvni PWM na tom istom porte.
Problem bol v simulatore ze to zle zobrazoval. Dakujem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 887
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 22 březen 2016, 22:38    Předmět: Citovat

zrejme pouzivas spatnej simulator, v cem si to skousel ?
_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku 1, 2  Další
 
Strana 1 z 2
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)