Zaslal: so srpen 25 2007, 18:06 Předmět: TMR0 16f84a
Mám ještš jeden problém: nefunguje mi TMR0, mám ho nastavený, aby čítal impulsy na RA4, poté ho přesouvám do W a následně zobrazuji binárně na port B. a je v něm pořád 1, nic se neděje. Kde asi dělám chybu? Prosím poraďte. Díky
Já bych to napsal tak
;***************************************
nějaká hlavička pprogramu, tzn. nadefinování proměných atd
;***************************************
poté
org h"00"
goto start_programu
org h"04"
goto preruseni
;***************************************
ted ta čás co jsi měl, nevím tet jestě jestli máš dobře nastený option registr ae snad jo
Vektor přerušení nemám, to je věc, se kterou jsem zatím nepracoval. Totiž já jsem s pic začal ze zájmu, sice už to nějaký pátek je, ale vzhledem k tomu, že se jimi zabývám jen když mám možnost, prokousávám se dost pomalu kupředu. No a přerušení jsem tenkrát nějak jen naťukl a protože jsem ho nepotřeboval, tak jsem se zabýval jinými problémy. Nějaký program, který mi řídí bufíka v autě, už jsem stvořil, ale protože ho chci zdokonalit, potřebuji snímat hallovým snímačem otáčky ventilátoru a v závislosti na nich měnit jeho výkon (zp. vazba). Zkoušel jsem ty impilsy ze snímače čítat do registru, ale nastal problém se zpožděním proc. při měření. Prostě buď se čítaly impulsy, nebo regulovalo. Impulsy jsou relativně pomalé, měření muselo trvat poměrně dlouho... Prostě tudy cesta asi nevede. A tak mne napadlo použít TMR0, o kterém se domnívám, že by mohl čítat při každem cyklu, procesor by mohl stíhat regulaci a podle potřeby bych se jen ptal na stav TMR0 nebo ho nuloval. Je to reálný?
Já myslím, že chceš kopírovat hodnotu registru tmr0 do portb.
Pak ale nesmíš použít "movlw tmr0", ale "movf tmr0, w".
To tvoje řešení načte do w přímo uvedenou hodnotu, tj. v tomto případě adresu registru tmr0.
Jasně, to jsem se upsal, dík. Ale v předchozích pokusech jsem to měl správně a stejně to nechodilo. V tom programu výše uvedeném se snažím zobrazit Option - výsledkem je celý portb na log. 1. Kde jen dělám tu zásadní chybu???
Hmm, to je divný.
Chyby máš 2, ale asi by se měly projevovat jinak.
1) Když čteš OPTION_REG, tak jsi zrovna v nulté stránce. Musíš dát před čtení BSF STATUS,RP0 a za čtení zase BCF STATUS,RP0. Takhle se ti nečte OPTION_REG, ale TMR0, což je ale divný, protože pak by se ty hodnoty měly měnit a ne být trvale na 1.
2)Stejnou chybu máš hned na začátku, kde nuluješ TMR0, ale nepřepnul ses do nulté stránky. Takhle můžeš nulovat i OPTION_REG. Ono se to asi neprojeví, protože bit RP0 je po inicializaci nastavenej na 0, ale není to hezké.
Takže nevím, proč to nejde. Kdyžtak to zkus oživovat postupně. Nejdřív si vyzkoušej porty. Třeba na ten B dávej konstantu a koukej, jestli tam je. Pak zkoušej složitější věci. Taky ten PIC může být spálenej?
Na portu b by měly být některé bity na 0 a některé na 1.
Jestli ani tohle nejde, tak ti asi ten pic vůbec nenaskočí.
Můžou být špatně hodiny nebo reset. To chce proměřit.
Děkuji za informace, nemám teď možnost vše odzkoušet, snad večer. Pic je ok, když do něj nahraju jiný program, vše je v pohodě. Chyba je v programu. Ještě bych se chtel zeptat, jak by se měl zapojit, jestli to není problém, procesor na počítač, abych ho nemusel neustále přendávat z programátoru (Pony prog) do zkušební desky (doma dělaná, obsahuje pouze krystal, na PA tlačítka a na PB LED). To jsou už stovky vyndat/zandat...
A ještě jeden dotaz: když budu mít SW v pořádku, bude se v TMR0 zvyšovat stav s každým impulsem na RA 4? Nezávisle na pracovním kmitočtu procesoru? Ten je mnohonásobně vyšší, než pulsy na RA 4.
Já jsem taky ten PIC pořád zandaval a vyndaval. Nějak to ale zapojit jde, aby se programoval uvnitř zapojení. Je to popsáno v datasheetu. Já to ale nikdy nepoužil.
Ty máš v OPTION_REG hodnotu B'00011111'. Proto se ti bude TMR0 zvyšovat podle hodin PICu, každý takt o jedničku. RA4 to bude ignorovat.
Pokud chceš, aby TMR0 čítal impluzy na RA4, tak musíš změnit hodnotu v OPTION_REG na B'00101111' nebo B'00111111'. Ta první hodnota způsobí, že to reaguje na vzestupnou hranu, ta druhá na sestupnou.
Já to teda nikdy nepoužil, ale podle datasheetu to tak má být.
No, až bude všechno makat jak má, tak třeba žačnu experimentovat s programováním v obvodu. Já jsem do datasheet koukal, je to tam. Ale jak vidíš, mám ted jiné problémy. Díky za rady, ozvu se, co je nového.
Teprve ted jsem se dostal zase k pracovnímu stolu, přepsal jsem v reg option jednu nulu na jedničku, nahrál do procesoru a ono to dělá, co má, t.j. čítá a zobrazuje impulsy. Několik dní se s tím po večerech trápím a popravdě řečeno, nechápu, kde jsem dělal tu chybu. Konkrétně tento registr byl nejsledovanější a myslím, že jindy jsem tam tuto chybu sice neměl, ale byla tam zase jiná. Např. nesprávná banka.
Fajn, mám radost. Děkuji za rady, dál zase pokročím sám a až zase narazím a nebudu si vědět rady, poprosím tě ještě o postrčení kupředu. Ještě jednou dík a pokud by se mi podařilo to programování v zapojení, ozvu se také.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2Další
Strana 1 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůž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. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.