Zdravím všechny, začínám programovat takže mám Piccolo od Asixu a knížku od Pana Hrbáčka s cédem kde je MPLAB, napíšu podle ní program ale vyhodí mi to okno. Dal jsem otisk obrazovky na www.maro-hk.com/program.htm , šváb je 16F84A . Díky moc za každou radu. Napadlo mě jestli se to nemůže cukat s XP.
Založen: Jun 13, 2004 Příspěvky: 5681 Bydliště: Břeclavsko
Zaslal: pá říjen 13 2006, 16:38 Předmět:
Každý programátor PICů potřebuje soft, se kterým umí komunikovat. V MPLABu napiš program, můžež ho odsimulovat a přeložit do hex souboru, se kterým pracuje progamátor. Na knížky se mrkni na www.ben.cz
Založen: Mar 22, 2006 Příspěvky: 431 Bydliště: Na soutoku Labe a Orlice
Zaslal: so říjen 14 2006, 21:37 Předmět:
jezevec napsal(a):
Každý programátor PICů potřebuje soft, se kterým umí komunikovat. V MPLABu napiš program, můžež ho odsimulovat a přeložit do hex souboru, se kterým pracuje progamátor. Na knížky se mrkni na www.ben.cz
Z Bena jsem si kupoval tady tu "Moderní učebnici programování PIC I."
Myslel jsem jestli jsi ty nebo někdo jiný nekápnul na vyloženě pěkně udělanou knížku o programování. Je nějaký překladač taky v češtině ?
Naposledy upravil Venda dne ne říjen 15 2006, 23:08, celkově upraveno 1 krát.
Založen: Oct 09, 2003 Příspěvky: 190 Bydliště: KARVINA
Zaslal: ne říjen 15 2006, 11:54 Předmět: MPLAB
dobra knižka je i učebnice programovani PIC od Vacka
taky zkoušim něco s PIC ,chtělo by to něco s příklady
jak zabranit ,překmitu na tlačitku?jak ošetřit tlačitko?
jak se děla zpoždění ? nomostabil
např. kde dělam chybu ja ?
chtěl jsem jednim tlačitkem postupně zapinat 0,1,2 a pak vyp
ale při třetim stisku vypne 1
jak to napsat ,aby po třech stisknutich tlačitka byl vystup 2 v jedničce
na 5 sekund , v připadě ,že bylo stisknuto jen 2x se provedl reset co 3 minuty a čekal opět na 3 stisknuti ?
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: út říjen 17 2006, 22:23 Předmět:
Venda pozri si toto forum, je tu riešený problém prerušenia, tam je odkaz na dobrú stránku. A samozrejme Ap.notes na stránke microchip.com, tam je veľa príkladov (aj jednoduchých).
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: út říjen 17 2006, 23:13 Předmět:
elktromichal
v prvom rade zapínaš 2 - 1 - 0 - (a všetko vypnúť). Program je jednoduchý a nevidím tam problém (pre istotu sa pozrite aj niekto iný). Ak to nevypína správne, skús na začiatku programu zapísať všetky dotknuté registre, aj keď datašit hovorí že po resete sa nastavia.
Aby si vylúčil zákmity, pripoj G3 cez 4k7 na (+) a k tlačítku pripoj kondenzátor 1n.
Ďalej môžeš za každým rozsvietením vložiť čakanie ~1ms:
START
BTFSC GPIO,3 ;GPIO3 tlacitko
GOTO $-1
BSF GPIO,2 ;out 2
call wait1m
BTFSS GPIO,3
GOTO $-1
Ak po troch stlačeniach tlačítka má svietiť G2 5 sec a potom zhasnúť, tak jednoducho
bcf gpio,0
bcf gpio,1
call wait5s
bcf gpio,2
Ak má po stlačení tlačítka čakať 3 min a potom opäť na začiatok, tak:
bcf status,C
BTFSS GPIO,3 ;GPIO3 tlacitko bolo stlacene?
GOTO LED1 ; bolo stlacene tak svietit
call wait700u ; nebolo stlacene tak cakat
incf cas_cakania ; pripocitat do pomocneho registra cakania
btfss status,C ; skontrolujem ci je nahodeny C
goto $-5 ; nie, tak spat testovat ci je stlacene tlacitko
bcf gpio,0 ; rutina sa opakovala 256 krat, register presiel cez nulu,
bcf gpio,1 ; je nahodeny C, tak sa vynuluju G0 a G1 a ide
goto START; na zaciatok
; 256 x 700us je 179 s = 3 min
LED1:
clrf cas_cakania ; nulovat pomocny register cakania, nabuduce budem potrebovat opat 3min
bsf gpio1
.
.
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: st říjen 18 2006, 19:07 Předmět:
Mám dva tipy ako vytvoriť čakanie:
1/
; cakanie 1 ms 12F629 pri intRC osc má 4MHz a na jednu inštrukciu potrebuje jednu mikrosekundu.
.
call wait1m (2 cykly)
.
wait1m
movlw 0xf8 ; (1) 248 do w
movwf reg_w1 ; (1) 248 do reg_w1
; to boli 4 cykly - 4 us
w_1
decf reg_w1,f ; (1) dekrementovať reg_w1
btfss status,C ; (1 - 2) kontrolovat ci je reg_w1 uz nula
goto w_1 ; (2) nie je tak spat na zaciatok cyklu
; 4 cykly x 248 je 992us
return ; (2) vynuloval sa cely register tak navrat z podprogramu
.
4 + 992 + 2(btfss) + 2(return) = 1000us = 1ms
2/ ...Iný možný spôsob je:
povoliť prerušenie, GIE, do TMR0 vložiť 250 (!!!), preddelič nastaviť na 1:4, vstup do TMR0 cez preddelič z oscilátora.
V programe povoliť prerušenie T0IE,
Keďže viem že o 1ms nastane prerušenie tak sa môžem v programe venovať čomukoľvek inému.
Po 1 ms ma prerušenie vráti k riešeniu problemu.
Tú hodnotu 250 treba prepočítať vyhľadom na ošetrenie prerušenia.
Založen: Nov 21, 2005 Příspěvky: 524 Bydliště: Bratislava
Zaslal: čt říjen 19 2006, 12:54 Předmět:
V prípadoch, kde som použil btfss status,C myslím, že by bolo vhodnejšie použiť btfss status,Z, teda nekontrolovať C, ale Z bit.
A ešte prikladám jeden príklad čakanie na dĺžku dvoch bytov:
Wait_N
movlw HI_Time ; Nacitanie horneho bytu cakania
movwf reg_Hi ; uloz do registra
movlw Lo_Time ; hodnota v dolnom byte ostane vo W
W_1:
addlw 1 ; inkrementujem W (w = w + 1)
btfsc status, Z ; je W zaplnene do 0? Ak nie tak skocit.
decfsz reg_Hi, f ; W sa naplnil tak dekrementuj reg_Hi a hned kontroluj ci je nula
goto W_1 ; opakovat slucku
return ; aj reg_Hi uz bol nula tak navrat z cakania
Dĺžka čakania je (4MHz): (((reg_Hi) x (Lo_Time)) x 5) + 5 mikrosekúnd (max. 327685us = 327,685ms)
A niekde som videl zaujímavé predĺženie slučky:
W_1:
addlw 1 ; inkrementujem W (w = w + 1)
goto +2 ; (2) skoc o dva dopredu
goto +2 ; (2) skoc o dva dopredu
goto -1 ; (2) skoc o jeden dozadu
btfsc status, Z ; je W zaplnene do 0? Ak nie tak skocit.
decfsz reg_Hi, f ; W sa naplnil tak dekrementuj reg_Hi a hned kontroluj ci je nula
goto W_1 ; opakovat slucku
return ; aj reg_Hi uz bol nula tak navrat z cakania
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.