Problém s PIC12F1572

Ahoj
Jj, pravda, zapomněl jsem tam dát další clrwdt po zhasnutí LED.
Mám ale spíš problém s nastavením bank a registrů. Mohl by se mi na to prosím někdo mrknout?
Děkuji

Jo a na Cčko zatím nebudu přecházet. Učím se Asm. Jsem nováček v tomto směru :astonished:)
Ještě jednou děkuji všem, kdo mi poradí
L.

BANKSEL TRISA
movlw 13H ;nastavení WDT na 512ms
movwf WDTCON

BANKSEL PORTA
clrf PORTA ;vynuluj výstupy

Místo GOTO dej BRA a nuluj WDT.

Tento typ PIC má i výstupní latche, nemělo by se zapisovat do nich?

Mělo,ale jde to i do PORTx.

[forum.mcontrollers.com/t/goto-nebo-bra-kdy-je-pouzit/3243/1)

Tak z toho nejsem ani trochu moudrej :astonished:)

Pokud to máš takhle tak používej bra dokud ti při kompilaci nenapíše error.

Ahoj, dal jsem BRA a kompilace i program je v pohodě. Prosím Tě a můžu používat BRA místo GOTO vždy. V pár programech mám i skoky s použitím dolaru a nerozumím téhle Tvé větě:

“Bacha na to!!!když skáčeš pomocí bra $+6 nebo bra $-6 tak to skočí o 3 řádky, ALE goto $+6 nebo goto $-6 skočí při líchém počtu instrukcí o 4.”

Nerozumím, proč skáče o jiný počet řádků, než je zadáno.
Děkuji

Já datasheet tohohle švába nečetl,ale to skákání pomoci $ se týká hlavně pro 18F.

Jde o to že PIC počítá po 2, nejde skákat po lichých číslech. když už dáš někam $ tak si to v simulaci ověř.

Bra $ + 10 není to samé jako goto $ + 10, ale není to pravda vždy.

Jsem po noční a nerad bych se do toho zamotal :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

No já používám GOTO $ +/- u PIC12F675 a jede to v pohodě. Je fakt že jsou to sudá čísla. Lichá jsem nikde nepsal, tak nevím.
Simulátor je teprve v plánu, zatím je to pro mě španělská vesnice, jako ostatně spousta dalších věcí. Zatím se učím a :slight_smile:
Tenhle PIC jsem chtěl vyzkoušet, protože je o 10,-Kč levnější než 675, pro mou aplikaci plně dostačující a má mnohem víc možností v oblasti časování WDT a pracovní frekvence.
Pracuji zrovna na bateriově napájeném snímači otáček a jde mi především o snížení spotřeby.
Děkuji za trpělivost :slight_smile:
L.

Ahoj tohle se týká 18F řady, ta funguje trochu jinak.
PIC12,16 pokud si vzpomínám dobře, tak má 14b programové slovo a jsou v skokách možné jak liché tak sudé adresy. U PIC18 je 16b programové slovo a tam si to zjednodušili v návrchu tak, že se skáče jen po sudých adresách, lichá je na půlku řádku a to nejde.

Na zápis do výstupních pinů si zvykni používat odpovídající LATx pokud to ten konkrétná PIC má. Do PORTx se nezapisuje, tam se jen čte stav vstupů. Ono to sice u některých brouků funguje, ale jen u některých, navíc se pak můžeš dostat do R-M-W pasti a tato chyba/ nedokonalost tě může pěkně ztrestat.

Osobně bych na začátek používal GOTO než BRA. BRA dosáhne jen 127 adres daleko, GOTO obsáhne celou paměť. Ale chápu kam tím Honza míří, šetří to paměť.

BRA $+2 je to stejné co GOTO $+2. Znak dolaru je aktuální adresa PC, takže $ + 2 skočí o 2 adresy dál.

Ahoj, děkuji za další rady.
Jen nerozumím této větě: *Na zápis do výstupních pinů si zvykni používat odpovídající LATx pokud to ten konkrétná PIC má. Do PORTx se nezapisuje, tam se jen čte stav vstupů.

Můžeš mi prosím upřesnit, kde mám tuto chybu?
Děkuji pěkně předem
L.*

Luba : v #DEFINE máš
#DEFINE LED1 PORTA,0
tam máš mít LED1 LATA,0

Mrkni do datasheetu na stranu 109, tam je port nakreslený jak je poskládaný. Většina PICů už to má takhle a u spousty novejších řad už zápisem do PORTx ne ti změna nepromítne na výstupní piny.

Ahoj
aha, už to chápu. No, používal jsem to tak u 675 a tak jsem to jen okopčil.
Opravím to. Děkuji :slight_smile:

No a pro všechny, komu by pomohlo mé nastavení 1572 v úvodu vlákna, tak si doplňte toto:

BANKSEL OPTION_REG
movlw 00H
movwf OPTION_REG

Na jednoduchém blikání LED to nebylo poznat, ale jak jsem dal složitější program, dělal mi psí kusy.
Je potřeba vynulovat OPTION_REG

Můžeš použít přímo CLRF OPTION_REG
Nicméně, nevidím jedinný důvod k tomu ho nulovat a na to co tam máš v assembleru nemá vliv.

Ahoj, Jj, taky varianta.
No, jestli jsem dobře četl v datasheetu, tak bez nulování OPTION_REG nelze povolit jednotlivé pull-upy - strana 115, jestli to správně chápu. V každém případě po tomto zápisu vše chodí jak má.
Děkuji za příspěvěk.

Ještě dodám… jak píšu v minulém příspěvku, tak s jednoduchým blikáním LED jak mám na začátku vlákna to chodilu dobře. To byl ale jen prográmek na rozběhnutí PIC. Teď tam píšu jiný, s infrasnímačem a Schmitt KO a tam mi to zlobilo.

Tak to jsi pochopil špatně. Z DS doslova:

Takže co se týče pull-upů, jde “jen” o bit /WPUEN toho registru, což je globální povolení všech pull-upů, které si pak můžeš pro jednotlivé piny ještě individuálně povolovat v registru WPUA.

Ahoj, děkuji za opravu. Máš pravdu. Napsal jsem to špatně. Pro pull-upy pravdu stačí nulovat jen bit WPUEN. Já ve svém programu ostatní funkce v tomto registru nepotřebuji, tak jsem jej vynuloval celý. Ale správně je to skutečně jak píše Mahoney.