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   1117 / 1203
(#) nedudgi válasza menyus hozzászólására (») Ápr 14, 2020 /
 
Inkább az MPLab ver 8.92 ajánlott.
(#) menyus válasza proli007 hozzászólására (») Ápr 14, 2020 /
 
Értem, köszönöm! Összebarátkozom a szimulátorral, eddig azt se tudtam hogy lehet előcsalni. Újabb feladat, de lassan felcsipegetek Tőletek (megint) annyit hogy ne csak ledeket et tudjak villogtatni. Régebben voltak "komolyabb" PIC es projectjeim is, PLL es adók (I2C - LMX2326 al), GPS, GSM..stb. De csak a 8 bites kontrollerekig jutottam, aztán közbeszólt a nagybetűs Élet. Egy kisebb laza agyvérzés után még az is csoda hogy egy év rehab után tudok már gépelni és kérdezni, forrasztgatni..stb. Sok dolog kiesett e miatt, ami már megvolt régebben. Meg eleve nem is vagyok már tinédzser korban, lasabban forog a megmaradt agyam, sorry ) Köszönöm.
(#) menyus válasza nedudgi hozzászólására (») Ápr 14, 2020 /
 
Ha "megeszi" a 10 éves projecteket is akkor lecserélem. De valamiért úgy emlékszem gondom volt a legfrissebb "hagyományos" MPLAB IDE verzióval ezért visszatettem a 8.40 et.
A hozzászólás módosítva: Ápr 14, 2020
(#) nedudgi válasza menyus hozzászólására (») Ápr 14, 2020 /
 
Ha nem eszi meg, az inkább a fordítóprogram miatt van. Javaslom, hogy a beállításokat hagyd meg alapértelmezésben, sokkal kevesebb gondod lesz.
(#) menyus válasza nedudgi hozzászólására (») Ápr 14, 2020 /
 
Rendben, megpróbálom. Köszönöm.
(#) oregharcos válasza benjami hozzászólására (») Ápr 14, 2020 /
 
Sziasztok Benjami és Ktamas66! Köszönöm a segítségeket! Játszottam a paraméterekkel. Ha a 109. sorban nem adok meg paramétert, akkor a 32. sorban jelez hibát. Ha a 109. sorban adok paramétert, akkor ott jelez hibát. Bárhogy csinálom nem sikerül. Az assemblernél számomra átláthatóbb, hogy melyik cimkére kell ugratni a programot. Itt ezt nem értem, hogy miért ugrik a program valahova? Azt sem értem, hogy Jedlesnél ezzel a beállítással hibátlanul működik, nálam meg nem. Mit csináljak másként?
Köszönöm, hogy foglalkoztok vele?
(#) Hp41C válasza oregharcos hozzászólására (») Ápr 15, 2020 /
 
Idézet:
„Ha a 109. sorban adok paramétert, akkor ott jelez hibát.”

Miután a nygfigy eljárás definíciójában (19.sor) nincs paraméter a zárójelek között
  1. void nygfigy()

a fordító hibának veszi, ha paraméterrel hívod. A 109. sorban így hívod:
  1. nygfigy(2120);

azaz átadsz a nygfigy eljárásnak paramétert. Ha a 2120 -at kitörlöd, a hívás és a definíció összeegyeztethető, nem ad rá hibát.
Idézet:
„Ha a 109. sorban nem adok meg paramétert, akkor a 32. sorban jelez hibát.”

A 37. sorban hívsz egy eljárást
  1. Delay_nyg(1);

Az eljárás, amiben meghívod a Delay_nyg -t az maga a Delay_nyg eljárás. Mi történik egy eljárás meghívásánál:
A paraméter(ek)et egy stack -ra másolja a program és call -lal meghívja az eljárást. A PIC16F877A stack -je csak 8 szintű, a paramétereknek sem áll rendelkezésre sok memória. Mi történik, ha egy ilyen eljárás önmagát hívja meg. Újból és újból a stack -re teszi a paramétert és újabb call -lal meghíja önmagát - rekurzív eljáráshívás lesz belőle. Ha nincs kilépési feltétel (márpedig itt nincs) a teljes memóriaterületet felülírja, betelíti a stack -et.
Ennek elkerülése végett a microC nem engedi meg az ilyen rekurzív eljárás hívást a 16F széria kontrollerein.
A 109 sorba helyére írt be:
  1. delay_ms(1);
A hozzászólás módosítva: Ápr 15, 2020
(#) oregharcos válasza Hp41C hozzászólására (») Ápr 15, 2020 /
 
Üdv. Hp41C! Köszönöm a segítséget! Ki fogom próbálni, remélem, hogy sikerül!
(#) oregharcos hozzászólása Ápr 16, 2020 /
 
Üdv. Hp41C! Köszönöm a magyarázatot! Igazad volt, mert a 37.sorban a Delay_ms helyett a Delay_nyg-ot adtam meg, ott van a for ciklusban az "int ido" változó, de én az idő helyett nyg-ot adtam meg. Igy már sikerült egy lépést tenni a C-ben! Nagyon köszönöm a segítséget!
(#) tomi324 hozzászólása Ápr 16, 2020 /
 
Sziasztok!
Adott: PIC16F88.
Belső oszcillátorról szeretném működtetni, ilyenkor ha alvó állapotba állítom, leállítja a belső oszcillátorát?
Igazából a Timer1-el szeretnék kívülről érkező jelet számoltatni, majd túlcsorduláskor felébreszteni a processzort.
Nem értem, hogy ilyenkor muszáj saját (külső) oszcillátort építeni a Timer1-nek hogy alvó állapotban működőképes maradjon, vagy járva marad a belső oszcillátor?
A másik kérdésem az lenne, hogy a Watchdog oszcillátora (ha be van kapcsolva a Watchdog) minden esetben üzemel?
(#) Bakman válasza tomi324 hozzászólására (») Ápr 16, 2020 /
 
A belső oszcillátor leáll, Timer1 megszakításra felébred a kontroller. Watchdog működik alvás közben is, de mielőtt fellövöd a pizsamát, le tudod állítani a wdtcon regiszter segítségével.
A hozzászólás módosítva: Ápr 16, 2020
(#) LSB hozzászólása Ápr 17, 2020 /
 
Üdvözlet az Uraknak!
Ez a PIC32MZ2048EFH nagyon magasan van hozzám képest, és a távolságot nagyon nehezemre esik csökkenteni. Nehezen, de eljutottam odáig, hogy működtessem a timer 1-et, és a Change Notification funkciót éldetektálós funkcióban, DE CSAK KÜLÖN-KÜLÖN (mire erre rájöttem, az is sok idő volt.)
Ha már megemlítem (deklarálom) az Mplab X Ide-nek a másik ISR-t, a proci futás alatt megmakkan,
olyannyira, hogy debug alatt a pickit3 jelzi, hogy megállt az egység.
Nem tudom, mi lehet a gond, tudna valaki otletet adni.
Koszi a figyelmet,
sziasztok

(Nem adhatom lejjebb, mert már egy rég óta szüneteltetett projectemet akarom befejezni, ahhoz
meg ez kell. Terveztem és csináltam egy nagyon stabil futású, ámde pontatlan, maszív CNC-t.
Elektronikusan akarom korrigálni az ideálistól való eltérő haladást. Ezt csak azért írtam le, hátha valakit érdekel.)
(#) tomi324 válasza Bakman hozzászólására (») Ápr 18, 2020 /
 
Köszönöm a gyors választ! Azt gondoltam, ha leáll az oszcillátor, a timer se tud számolni.
(#) Pali79 válasza tomi324 hozzászólására (») Ápr 18, 2020 / 1
 
Kicsi zavart érzek... Ha a Timer1 a PIC-et is hajtó belső órajelről jár akkor természetesen az is leáll. A Timer1 külső órajelről tud járni alvó üzemmód alatt is. Ha a timer számlálója túlcsordul, felébreszti a PIC-et.
(#) benjami válasza tomi324 hozzászólására (») Ápr 18, 2020 / 1
 
És nem árt T1CON regiszter T1SYNC bitjét 1-re állítani, hogy ne próbálja meg a timer léptetését az alvó módban nem létező processzor órajelhez szinkronizálni.
(#) Szemmy hozzászólása Ápr 19, 2020 /
 
Sziasztok. Váltottam 16-ról 18-as PIC-re. van egykét utasitás ami más a 18-ban.
Elakadtam a STATUS regiszternél.
BCF STATUS,C
BTFSS STATUS,Z
Ezeket szeretném a 18-ba berakni. Segítenétek? Köszönöm.
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 19, 2020 /
 
Ezeknek az utasításoknak működniük kell a 18F sorozat esetében is. Annyi a változás, hogy az adat memóriára hivatkozó utasításoknak van még egy paraméterük, ami azt határozza meg, hogy a bank (BSR) regiszter által meghatározott bankot vagy az ACCESS bankot használja a címzésnél.
  1. BCF STATUS,C, ACCESS
  2. BTFSS STATUS,Z, ACCESS

Figyelmesen át kell nézni, hogy az egyes utasítások milyen jelzőbiteket állítanak a két széria kontrollerein.
(#) Szemmy válasza Hp41C hozzászólására (») Ápr 19, 2020 /
 
Köszönöm. előttem volt 16-os 18-as adatlap de nem tudtam kihámozni.
volt abban minden SSPSTAT BC, BZ, De egyik sem működött.
Köszönöm.
(#) Pali79 válasza Szemmy hozzászólására (») Ápr 19, 2020 /
 
Azt sem árt megnézni, hogy nem kiváltható-e az adott utasítás. A STATUS Z és C bitjeinek vizsgálatát sokszor használják pl. egy léptett regiszter értékének figyelésére. A 18-as szériánál erre már megvannak a direkt parancsok is.
(#) Pali79 válasza Szemmy hozzászólására (») Ápr 19, 2020 /
 
Idézet:
„volt abban minden SSPSTAT BC, BZ,”
Nem csoda... A SSPSTAT az SSP kommunikációs modulhoz van. Semmi köze a STATUS regiszterhez.
(#) Szemmy válasza Pali79 hozzászólására (») Ápr 19, 2020 /
 
Igen ahoz kellene. De erre a BCF STATUS,C, ACCESS-re is hibát ír a forditó.
(#) Pali79 válasza Szemmy hozzászólására (») Ápr 19, 2020 /
 
Tedd be ide a kódrészletet, hátha könnyebb lesz.
(#) Szemmy válasza Pali79 hozzászólására (») Ápr 19, 2020 /
 
Megoldódott Köszönöm, most a bank váltásokkal kínlódok. De olvastam hogy az automatikus, tehát nem kell vele foglalkozni. Ha igaz.
(#) Hp41C válasza Szemmy hozzászólására (») Ápr 20, 2020 /
 
Nem automatikus. elérhető a BSR által kiválasztott lap
  1. banksel VALT1
  2. movf VALT1, w BANKED

vagy az ACCESS bank.
  1. bcf WREG, 6, ACCESS

Indirekten ill. a movff utasítással a teljes adatterület címezhető.
Az ACCESS bank a 0. Bank "eleje" és a 15. Bank "vége". A hatás a típustól függ, általában 0x00 - 0x5F a 0. bankból és 0xF60 - 0xFFF a 15. bankból.
Vannak újabb 18F -ek, amelyeknek több bankjuk van. (ld. movffl)
(#) Szemmy válasza Hp41C hozzászólására (») Ápr 20, 2020 /
 
Köszi. Majd próbálkozok. Merőben más egykét dolog meg utasítás, lesz mit tanulni ismét.
Az enyém 18F4520-as.
(#) icserny válasza Szemmy hozzászólására (») Ápr 20, 2020 /
 
Nézz szét a honlapomon is, hátha segít valamit!
(#) menyus hozzászólása Ápr 21, 2020 /
 
Sziasztok!

LCD vezérléssel kapcsolatban kérdezném, hogyan lehetne megoldani azt a problémát hogy hardveresen úgy kötöttem össze a kontrollert(16F877) az LCD(HD44780) vel hogy a PORTB alsó négy bitje vezérli az LCD felső 4 bitjét? Tehát a két nibble "keresztben van." PORTB alsó nibble vezérelné az LCD felső nibble ét. Hab a tortán hogy még ezen belül is sikerült kersztbe kötnöm mivel a PORTB legalsó bitje vezérli az LCD legfelső bitjét. Tehát teljes a káosz a fejemben. Mivel nem foglalkoztam még LCD vel nem figyeltem a tervezéskor, nem gondolván hogy ez később jelentősen (legalábbis nekem) megnehezíti majd a vezérlést. Jelenleg így van bekötve:

PORTB0 - LCD_D7
PORTB1 - LCD_D6
PORTB2 - LCD_D5
PORTB3 - LCD_D4

Az inicializálás 8 bites részével nincs gondom, csak a portokra kell odafigyelni a "keresztbe kötés" miatt. De ez a maszkolásos dolog kifog rajtam. A maszkolás tulajdonképpen nem tesz mást mint hogy az éppen kimaszkolt nibble t 0000 ba állítja?

proli007 től kapott oktató jellegű pelda kódjában így van megoldva a felső , alsó nibble küldése. Ha jól tudom van erre külön utasítás, gondolom azért van így a példakódban hogy szemléltesse a működését a félbájt küldésnek. Ha jól gondolom... Jelenleg így próbálom, a swapf ot én tettem bele, lévén hogy nálam a két nibble fel van cserélve. De nem biztos hogy ez így jó, sőőt..:

  1. MOVLW   b'00000100'     ; Felső nibble:
  2.         swapf   lcdport,f
  3.         movwf   lcdport         ; Function Set: DL=0 azaz 4 bites mód
  4.        
  5.         CALL    enable
  6.         MOVLW   b'00000000'     ; Alsó nibble:
  7.         movwf   lcdport         ; N=1 azaz 2 soros üzemmód, 5x8 pontos CHR formátum
  8.         CALL    enable
  9.         movlw   .4                      ; 40us várakozás
  10.         call    DELAY10
  11.        
  12.  
  13.         MOVLW   b'00001100'     ; Felső nibble:
  14.         swapf   lcdport,f
  15.         movwf   lcdport         ;
  16.         CALL    enable
  17.         MOVLW   b'00000001'     ; Alsó nibble:
  18.         swapf   lcdport,f
  19.         movwf   lcdport         ; Display off, Cursor off, Blinking off
  20.         CALL    enable
  21.         movlw   .4          ; 40us várakozás
  22.         call    DELAY10
A hozzászólás módosítva: Ápr 21, 2020
(#) pipi válasza menyus hozzászólására (») Ápr 21, 2020 / 1
 
Hali!
Nagyon csúnya lenne azt a pár fóliát elvágni, normális sorrendben bedrótozni?
Valamelyik microchipes példában láttam(talán lcdblocking néven volt), hogy bármilyen biten lehetett bármi, de nyilván ez a sebességbe, kódméretbe beleszól.
(#) menyus válasza pipi hozzászólására (») Ápr 21, 2020 /
 
Szia, ez egy általam vasalt demo board. Nem olyan vészes csak macerás mert pl. a PIC DIL tokozású és SMD ként van felforrasztva foglalat híján és alatta is mennek vezetősávok.... stb
A hozzászólás módosítva: Ápr 21, 2020
(#) menyus válasza pipi hozzászólására (») Ápr 21, 2020 /
 
De lehet ez lesz, ha a kódot ennyirte megbonyolítja ahogy írod. Akkor gondolom arra gondolsz hogy a PORTB4 - 7 vezérelje az LCD D4 - D7 et. Jelenleg viszont a PORTB felső 4 bitje az EN és az RS (az RW fixen GND n van) , valamint a PB6 és 7 két egyéb bemenet, + a PGD- PGC ami tovább bonyolitja a helyzetet.
A hozzászólás módosítva: Ápr 21, 2020
Következő: »»   1117 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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