Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

TMR0 16f84a
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: so srpen 25 2007, 18:06    Předmět: TMR0 16f84a Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
caven



Založen: Aug 15, 2006
Příspěvky: 417

PříspěvekZaslal: so srpen 25 2007, 19:14    Předmět: Citovat

Možná by bylo dobrý kdyby jsi sem hodil zdroják
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: so srpen 25 2007, 20:05    Předmět: Citovat

BSF STATUS,RP0
clrf trisb
BCF STATUS,RP0

movlw b'11101000'
option

Start movlw tmr0
movwf portb
goto Start

Je možný, že dělám nějakou chybu, za kterou bych se měl stydět. Budiž mi omluvou, že jsem začátečník, úplný samouk a starší ročník k tomu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
caven



Založen: Aug 15, 2006
Příspěvky: 417

PříspěvekZaslal: ne srpen 26 2007, 14:11    Předmět: Citovat

a kde máš zapsán vektor přerušení ???
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
caven



Založen: Aug 15, 2006
Příspěvky: 417

PříspěvekZaslal: ne srpen 26 2007, 14:17    Předmět: Citovat

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


startprogramu BSF STATUS,RP0
clrf trisb
BCF STATUS,RP0

movlw b'11101000'
option

stop goto stop ;zde jakoby zastavíš procesor a čeká jenom na přerušení

proruseni movlw tmr0
movwf portb
goto Stop


Snad jsi to pochopil pokud ne tak dej vědět.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: ne srpen 26 2007, 19:36    Předmět: Citovat

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ý?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Piitr
Neregistrovaný





PříspěvekZaslal: po srpen 27 2007, 7:12    Předmět: Citovat

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.
Návrat nahoru
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: po srpen 27 2007, 21:41    Předmět: Citovat

RADIX DEC
CONFIG 0x3FF9

CBLOCK 0x0C
ENDC

ORG 0

CLRF TMR0

BSF STATUS,RP0
MOVLW B'11111'
MOVWF TRISA

MOVLW B'00000000'
MOVWF TRISB

MOVLW B'00011111'
MOVWF OPTION_REG

MOVLW B'00011111'
MOVWF INTCON

BCF STATUS,RP0
ZPOMAL1 equ 12h
ZPOMAL2 equ 13h
ZPOMAL3 equ 14h
ZPOMAL4 equ 15h



START MOVF OPTION_REG,0

MOVWF PORTB


CALL cas0
GOTO START



cas0 movlw 1
movwf ZPOMAL4

NASTAV1 movlw 1
movwf ZPOMAL3

NASTAV2 movlw 20
movwf ZPOMAL2

NASTAV3 movlw 10
movwf ZPOMAL1

clrwdt

NASTAV4 decfsz ZPOMAL1,1
goto NASTAV4
decfsz ZPOMAL2,1
goto NASTAV3
decfsz ZPOMAL3,1
goto NASTAV2
decfsz ZPOMAL4.1
goto NASTAV1
return

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???
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Piitr
Neregistrovaný





PříspěvekZaslal: út srpen 28 2007, 7:00    Předmět: Citovat

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?
Návrat nahoru
Piitr
Neregistrovaný





PříspěvekZaslal: út srpen 28 2007, 10:16    Předmět: Citovat

Třeba zkus jen toto:

org 0
bsf status, rp0
clrf trisb
bcf status, rp0
movlw 85
movwf portb
xxx goto xxx

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.
Návrat nahoru
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: út srpen 28 2007, 10:25    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Piitr
Neregistrovaný





PříspěvekZaslal: út srpen 28 2007, 12:38    Předmět: Citovat

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.
Návrat nahoru
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: út srpen 28 2007, 13:08    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ok1f



Založen: Sep 11, 2006
Příspěvky: 239

PříspěvekZaslal: st srpen 29 2007, 21:21    Předmět: Citovat

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é.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Piitr
Neregistrovaný





PříspěvekZaslal: čt srpen 30 2007, 7:22    Předmět: Citovat

Za málo. To je bezva, že to šlape.
Návrat nahoru
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.13 sekund