Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   692 / 1210
(#) sunside válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Bocs a rossz beillesztésért. Mindjárt be is égetem az általad javasoltat.
Egy kérdés: hogyan lehetne állitani a ki-be kapcsolási időt emberi mértékkel (másodperc) ?
(#) Pali79 válasza sunside hozzászólására (») Júl 30, 2015 /
 
Az általam javasol kódban legegyszerűbben úgy, hogy többszörözzük a call DelayLoop sort. Ugyebár egy sor majdnem 0,2 másodperc, ha ötször egymás alá beszúrjuk akkor kb 1 másodpercet kapunk. Persze van erre más megoldás is, de az bonyolultabb.
(#) sunside válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Bemásoltam, Build Failed hibával leáll.
(#) Pali79 válasza sunside hozzászólására (») Júl 30, 2015 /
 
Bocsánat! Figyelmetlen voltam. Két helyen maradt benne hiba.
A hiba:
  1. goto    OndelayLoop

Helyesen:
  1. goto    DelayLoop

Ez kétszer szerepel a kódban, mindkét helyen át kell írni!
(#) sunside válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Elöször: Kössz a türelmedet.
Most már csak az a baja, hogy Build-nél leáll: The project contains no source files.
Ezt mivel csináljam neki?
(#) sunside válasza sunside hozzászólására (») Júl 30, 2015 /
 
Megtaláltam a hibát, most megy.
(#) Pali79 válasza sunside hozzászólására (») Júl 30, 2015 /
 
Én úgy szoktam, hogy egy szövegszerkesztővel (Notepad++) létrehozok egy egyszerű nevű asm-et, pl ezt most 16f690_blink.asm néven mentettem el. Az MPlab nem nagyon szereti ha túl mélyen van a fájl, célszerű pl így: C:\PIC\16f690_blink.asm
Aztán projekt wizard-dal létrehozom a projektet és amikor kéri belinkelem neki a fájlt.
(#) sunside válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Idézet:
„Persze van erre más megoldás is, de az bonyolultabb.”

Lehetne esetleg erről beszélni (mert 3 perc az nagyon sok sor) vagy inkább elégedjek meg mára ennyivel és valamikor folytatnánk?

Persze az eddigi segítséget is köszönöm.
(#) Pali79 válasza sunside hozzászólására (») Júl 30, 2015 /
 
Esetleg ezt lehetne megpróbálni szép sorjában:
1. a CBLOCK-ba egy Delay0 -át beírni
2. a DelayLoop rutint átírni így:
  1. DelayLoop
  2.         decfsz  Delay0,f
  3.         goto    DelayLoop
  4.         decfsz  Delay1,f
  5.         goto    DelayLoop      
  6.         decfsz  Delay2,f       
  7.         goto    DelayLoop      
  8.         return


Ez így már egyszeri meghívásra kb 50 másodperc kéne, hogy legyen. Nem tudom mennyire kell pontosan a 3 perc. Ha pontosan kell akkor más megoldást kell alkalmazni.
A hozzászólás módosítva: Júl 30, 2015
(#) sunside válasza sunside hozzászólására (») Júl 30, 2015 /
 
Gondolom, valami ciklusba kellene tenni a DelayLoop-ot.
pl:
itt
movlw 0xFF
delayloop
declw
goto itt
(#) sunside válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Annyira nem kell pontosan a 3 perc csak kb. A 3-4 mp. viszont fontos.
Amit az elöbb írtam a ciklusra, az csak egy elképzelés, nem komoly.
A hozzászólás módosítva: Júl 30, 2015
(#) sunside hozzászólása Júl 30, 2015 /
 
Na meg hibás is. így gondoltam:

movlw 0xFF
itt
delayloop
declw
goto itt
(#) sunside hozzászólása Júl 30, 2015 /
 
De szerintem egyelőre ennyi elég, nem rabolom az időd tovább. Majd legközelebb folytatom, addig olvasgatok a témáról.
(#) Pali79 válasza sunside hozzászólására (») Júl 30, 2015 / 1
 
KÓDGOMB!!!
De egyébként meg teljesen rossz. Egy alternatíva:
  1. Start
  2.         bsf             STATUS,RP0      ; select Register Page 1
  3.         bcf             TRISC,0 ; make IO Pin B.0 an output
  4.         bcf             STATUS,RP0      ; back to Register Page 0
  5.         movlw   0xff
  6.         movwf   szamlalo1
  7.         movlw   0x3F
  8.         movwf   szamlalo2
  9. MainLoop
  10.         bsf             PORTC,0 ; turn on LED C0
  11.         call    DelayLoop
  12.         decfsz  szamlalo1
  13.         goto    $-2
  14.         bcf             PORTC,0
  15.         call    DelayLoop
  16.         decfsz  szamlalo2
  17.         goto    $-2
  18.         goto    MainLoop


Amennyi értékkel feltöltjük a szamlalo1 és 2 regisztereket annyiszor fogja meghívni a késleltető rutint.
(#) ktamas66 válasza sunside hozzászólására (») Júl 30, 2015 /
 
Én ezt szoktam használni. Beütsz 180 másodpercet és adja a rutint. Persze igazából timer vagy CCP a megoldás és megszakítás.
(#) ktamas66 válasza Pali79 hozzászólására (») Júl 30, 2015 /
 
Az első körben. Másodszor mindkettő 0-ról indul.
(#) Pali79 válasza ktamas66 hozzászólására (») Júl 30, 2015 /
 
Hoppsssz! Valóban!
(#) Pali79 hozzászólása Júl 31, 2015 /
 
Ez a PIR1,SSPIF nem akar működni sehogy sem. Átírtam a egészet így:
  1. I2C
  2.         bsf             STATUS,RP0              ; Bank1
  3.         bsf             SSPCON2,SEN             ; Start bit
  4.         btfsc   SSPCON2,SEN             ; Start végére várunk
  5.         goto    $-1
  6.         bcf             STATUS,RP0              ; Bank0
  7.         movlw   b'10001000'
  8.         movwf   SSPBUF                  ; Címzés
  9.         bsf             STATUS,RP0              ; Bank1
  10.         btfsc   SSPSTAT,BF              ; Buffer kiürülésére várunk
  11.         goto    $-1
  12.         btfsc   SSPSTAT,ACKSTAT ; ACK jelre várunk
  13.         goto    $-1
  14.         bcf             STATUS,RP0              ; Bank0
  15.         movf    i2c_adat,w
  16.         movwf   SSPBUF
  17.         bsf             STATUS,RP0              ; Bank1
  18.         btfsc   SSPSTAT,BF              ; Buffer kiürülésére várunk
  19.         goto    $-1
  20.         btfsc   SSPSTAT,ACKSTAT ; ACK jelre várunk
  21.         goto    $-1
  22.         bsf             SSPCON2,PEN             ; Stop bit
  23.         btfsc   SSPCON2,PEN             ; Stop végére várunk
  24.         goto    $-1
  25.         bcf             STATUS,RP0              ; Bank0
  26.         return

Szerintetek?
(#) Pali79 válasza Pali79 hozzászólására (») Júl 31, 2015 /
 
Akkor így:
  1. MainLoop
  2.         movlw   0xff
  3.         movwf   szamlalo1
  4.         movlw   0x3F
  5.         movwf   szamlalo2
  6.         bsf     PORTC,0      ; turn on LED C0
  7.         call    DelayLoop
  8.         decfsz  szamlalo1
  9.         goto    $-2
  10.         bcf     PORTC,0
  11.         call    DelayLoop
  12.         decfsz  szamlalo2
  13.         goto    $-2
  14.         goto    MainLoop
A hozzászólás módosítva: Júl 31, 2015
(#) sunside válasza Pali79 hozzászólására (») Júl 31, 2015 /
 
Ez jónak ígérkezik, délután kipróbálom.
Egy kérdés: a goto $-2 konkrétan hova ugrik, mert kipróbáltam egy másik variációt és úgy néz ki, hogy valamit rosszul számolok ki és végtelen ciklusba fut.
(#) Pali79 válasza sunside hozzászólására (») Júl 31, 2015 / 1
 
Az utasítástól kettőt vissza. Tehát itt a call DelayLoop sorra. De ezzel csak óvatosan, mert könnyű elrontani, jobb a címkék használata csak ahhoz meg lusta vagyok.
A hozzászólás módosítva: Júl 31, 2015
(#) sunside válasza Pali79 hozzászólására (») Júl 31, 2015 /
 
Köszi, lassan azt hiszem, kezdem érteni.
Még egy kérdés: a PicKit2-vel MpLab alatt tényleg nem lehet realtime debugot használni, vagy csak én nem tudom beállítani?
(#) cross51 válasza Pali79 hozzászólására (») Júl 31, 2015 /
 
Ha jól emlékszem az adatküldésnél nem kell a BF bitet és az ACKSTAT bitet vizsgálni elég ha az R/W bitet figyeled. Elnézést ha rosszul emlékszem
(#) Pali79 válasza sunside hozzászólására (») Júl 31, 2015 /
 
Nem minden PIC-nél lehet. De csak a a debug-nál kell a PICKIT2-öt beállítani. Utána mennie kell ha a PIC tudja. De egy ilyen programnál a szimulátor is tökéletesen használható.
(#) Pali79 válasza cross51 hozzászólására (») Júl 31, 2015 /
 
Ennek utánolvasok még. Köszi!
(#) nagzso válasza usane hozzászólására (») Júl 31, 2015 /
 
Köszi szépen a segítséget. Én is hasonlóra gondolok, de úgy voltam vele inkább megkérdem.
(#) kt válasza Hp41C hozzászólására (») Júl 31, 2015 /
 
Értem.
Amúgy ha én a külső 20Mhz kristály frekvenciáját szeretném használni a 48Mhz helyett az időzítésnél , azt be tudom állítani ?
Arra gondoltam hogy a FOSC átállítom 20Mhz re , bár nem tudom hogy ez nagyon nagy baromság-e .
Tudtok segíteni ?
(#) Pali79 válasza kt hozzászólására (») Júl 31, 2015 /
 
Nem értem pontosan mit szeretnél. Az FOSC-t nem lehet állítani max a PLL-t ki vagy bekapcsolni. Ha 20 MHz-et akarsz akkor teszel egy ilyen kavicsot a picre, beállítod HS-t és kész.
Azt írtad, hogy 1us megszakítást akarsz csinálni és így villogtatod a ledet, de túl lassú. Hát ha egyáltalán látod, hogy villog akkor biztos nem jó, mert az 1us-t biztos nem látod. Mert az ugyebár egymillió felvillanás másodpercenként.
Szóval mi is a cél?
Ha jól számolom a Timer0 2,5-öt lép minimum 1us alatt, innen kell elindulni.
A hozzászólás módosítva: Júl 31, 2015
(#) kt válasza Pali79 hozzászólására (») Júl 31, 2015 /
 
A cél szoftveres pwm jel előállítása timerel, léptetőmotorok vezérléséhez. (azért kell szoftveres mert 4db motort kell vezéreljek)
(#) Pali79 válasza kt hozzászólására (») Júl 31, 2015 /
 
Ha ilyen sűrűn akarsz megszakítást, akkor miért 16 bites módban használod? Ha csak 8 bitben hajtod, akkor eleve fele annyi ideig megy, amúgy is látom a felső bájtot fullra töltötted, ennek nem sok értelme van.
Következő: »»   692 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem