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
Ahojte. Pekne Vás prosím, poradte mi s mojim problémom.
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...
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 167 x
Naposledy upravil(a) abcdef dne 30 pro 2010, 12:09, celkem upraveno 1 x.
pokusam sa zmeniť "beziace svetlo" na "beziac
ahojte. teraz si neviem poradiť, ako mám podľa "úlohy 2" (diel 23, PE11/2009) zmeniť program "bežiace svetlo" na "bežiaca diera".
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
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
![Sad :(](./images/smilies/icon_sad.gif)
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 137 x
ospravedlnujem sa ze znova otravujem, ale neviem si poradiť ani s úlohou 3.
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
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 117 x
Pokud myslíš, aby ani v simulátoru nebyla pauza 1 krok, tak by se to muselo řešit jinak, ale pokud to může na 1 krok zhasnout, tak vyzkoušej dát toto:
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![Wink ;-)](./images/smilies/icon_wink.gif)
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
![Wink ;-)](./images/smilies/icon_wink.gif)
Žádnej učenej z nebe nespadl ...
- Moje riešenie: na hovno. Pri prechode z RB7 do RB0, LED zhasli na celý jeden
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
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 ?
ešte Vás prosím o toto:
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
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
- (18.26 KiB) Staženo 123 x
toto sa mi nedarí odskúšať v simuláci
dobrý deň. Teraz som na dieli 27 (PE3/2010). Skúšam tento program. Je to len o blikaní LED na PORTe B katodou proti zemi na vývode RB0.
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.
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 149 x