seriál s PIC od p. Špringla občasný problém
Moderátor: Moderátoři
seriál s PIC od p. Špringla občasný problém
Studujem ako samouk články z PE "Mikrokontroléry PIC" ktoré uverejňuje Vít Špringl.
Teraz som v dieli 19(PE7/2009) kde treba odskúšať "první projekt blikajíci LED".
Stiahol som si súbor pic19(asm) zo stránok PE, preložil prekladačom MPLAB do HEX súboru
Mám programátor BeeProg od Elnecu a MCU programujem v ZIF pätici, preto som zo schémy (nižšie) vypustil úplne všetko okrem odporu 1k a LED
Ked do MCU nahrám program, vložím ho do kontaktného poľa a pripojím na napätie, tak LED nefunguje.
Iba občas bliká ale to musím dať ideálny jednosmerný zdroj - baterku. S ňou to bliká iba vtedy keď priblížim ruku k MCU. Potom už väčšinou ostane blikať kým nevypnem a nezapnem napájanie
Keď je to na sieťovom zdroji tak je to ešte horšie
V obidvoch prípadoch nepomáhajú ani filtračné ani blokovacie kondenzátory.
Dík za pomoc...
- Přílohy
-
diel 19 (7_2009).rar- diel 19 (7/2009)
- (77.94 KiB) Staženo 218 x
pokusam sa zmeniť "beziace svetlo" na "beziac
Nejakým spôsobom musím upraviť, aby po inicializácii boli na PORTB namiesto núl samé jednotky. Spravil som to podľa vlastných úvah, ale pri simulácii okne WATCH mám aj tak samé nuly, takže to nefunguje
Tiež som zmenil inštrukcie BTFSS na BTFSC
mohli by ste mi poradiť prosím kde robím chybu ? ďakujem...
nemám možnosť poslať teraz schému, ale je tam 8 LED pripojených na PORTB, katódou na zem
- Přílohy
-
Úloha 2 (Invertovaný svit LED (bez HW)).rar- (1.84 KiB) Staženo 193 x
Tuná treba zmeniť "bežiace svetlo" tak aby nebehalo od "mantinela k mantinelu", ale aby rotovalo stále dookola a NESMIE nastať stav, že pri prechode z PORTB, 7 na PORTB, 0 všetky LED na okamih zhasnú.
Prerobiť na "bežiace dookola" je jednoduché, ale vôbec neviem zabrániť aby LED nezhasli pri prechode z LED7 na LED0. Už som skúšal kadejaké inštrukcie, ale nič nepomohlo. Buď sa mi začal PORTB plniť čoraz viac "jednotkami", alebo tam bola stále medzera.
Má to vôbec riešenie ?
podľa mňa je hlavná komplikácia v tom že všetky bity rotujú aj cez bit CARRY v registri STATUS, preto sa tam tá jednotka na chvíľu "stratí". Keby sa dal bit C v STATUS nejako zakázať alebo obísť bolo by po probléme
V prílohe je origo výpis od "mantinela k mantinelu" a moja úprava "stále dookola", kde neviem zabrániť zhasnutiu LED.
dík
- Přílohy
-
Úloha 3 (beziace sv. dookola bez medzery).rar- (1.7 KiB) Staženo 185 x
BTFSC PORTB,7
RLF PORTB, f ; rotace registru PORTB vlevo
tzn.:
BTFSC PORTB,7
RLF PORTB, f ; rotace registru PORTB vlevo
RLF PORTB, f ; rotace registru PORTB vlevo
CALL DELAY ; volání čekací smyčky
GOTO ROT_LEFT
rozborku programu nechám na Tobě a simulátoru
prac. cyklus
- Chenzee riešenie: SUPER
- bolo treba opačne rozmýšľať. Ja som stále chcel logicky použiť inštrukciu
BTFSS RORTB, 7 , aby strážila kedy dôjde "1" na RB7 a s touto
inštrukciou som to nijako nevedel vyriešiť
- Naopak BTFSC PORTB,7 stále stráži "0" na RB7. Keď tam dorazí "1", tak
sa rotácia urýchli o jednu inštrukciu, a potom sa ešte raz zopakuje.
- tým sa vykompenzuje chvíľkové "odcestovanie jednotky" z RB7 do STATUS, C
- v simulátore je síce jeden krok navyše, ale počet inštrukcií a ms sú
presne rovnaké ako pri každom inom prechode, takže OK
dík
Absolute or Relocatable ?
Keď načítam do MPLAB nejaký .asm súbor a potom príkážem príkazom "make (F10)" preložiť do .hex, tak mi vyskočí otázka viď obrázok.
Autor v ktoromsi čísle káže dávať "absolute" ale ja by som chcel vedieť čo sa touto voľbou zmení alebo ovplyvňuje.
Preložil som si to aj z angl. jazyka do nášho, ale moc som z toho nezmúdrel.
dík
- Přílohy
-
absolute or relocatable.JPG- (4 KiB) Staženo 1066 x
toto sa mi nedarí odskúšať v simuláci
Program je takýto:
title "Projekt 3: Blikajuce svetlo podruhé"
LIST P=16F88
#INCLUDE <P16F88.INC>
;----------------------------------------------------
;NASTAVENIE KONFIG. SLOVA
;------------------------------------
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_ON & _INTRC_IO
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
;----------------------------------------------------
;VLASTNY PROGRAM
;-------------------------------------------------
BSF STATUS, RP0
CLRF TRISB
BCF STATUS, RP0
LOOP
SLEEP
INCF PORTB, f
GOTO LOOP
END
Problém mám v tom, že mi toto nechce fungovať v simulátore, hoci na kontaktnom poli mi to bliká pekne (cca 2,5s svit, a cca 2,5s tma).
Prečo sa mi v simulátore na PORTeB nič nemení ?(okno Watch)
A pritom mám v "Stopwatch" nastavené 31,25kHz a v okienku "stopwatch" som čakal aj 30s, a na PorteB nič !
Ako mám prosím Vás nastaviť simulátor, aby sa to chovalo v reálnom čase, ako pri zapojení na stolíku ?
Myslím tým hlavne PORTB v okne Watch
dík.
- Přílohy
-
neuspesna simulacia na RB0.JPG- (202.85 KiB) Staženo 204 x