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   1154 / 1203
(#) jdani válasza Bakman hozzászólására (») Márc 15, 2021 /
 
Bővebben: Link
Az IC felületére nincs írva semmi, le van törölve. Ennek az ICnek a kimenetére 3K soros ellenállás és tranzisztor van kötve, ami kapcsolja a relét. Ennek az RF kapcsolónak a jelét kell fognom PICel. Felesleges a relét e miatt használni. (A modul bontva lesz, és alkatrészei egy más nyákba lesznek téve)
(#) Peet19 hozzászólása Márc 15, 2021 /
 
Sziasztok!
Próbálom beállítani az A/D konvertert de állandóan ezt a hibát dobja ki:
Idézet:
„ADC-W0008: No stimulus file attached to ADRESL for A/D.
ADC-W0012: Selected channel 0 is an invalid channel.”

Mi lehet a baj?
A progi az adatlapon lévő minta program:
  1. MOVLW   B'10101111' ;right justify, Frc,
  2. MOVWF   ADCON2          ; & 12 TAD ACQ time
  3. MOVLW   B'00000000' ;ADC ref = Vdd,Vss
  4. MOVWF   ADCON1          ;
  5. BSF     TRISA,0         ;Set RA0 to input
  6. BSF     ANSELA,0        ;Set RA0 to analog
  7. MOVLW   B'00000001' ;AN0, ADC on
  8. MOVWF   ADCON0          ;
  9. BSF     ADCON0,GO       ;Start conversion
  10.  
  11. ADCPoll:
  12.         BTFSC   ADCON0,GO       ;Is conversion done?
  13.         BRA     ADCPoll         ;No, test again
  14.        
  15.         MOVFF ADRESH,RESULTHI
  16.         MOVFF ADRESL,RESULTLO
(#) Bakman válasza Peet19 hozzászólására (») Márc 15, 2021 /
 
Milyen PIC?
(#) Peet19 válasza Bakman hozzászólására (») Márc 15, 2021 /
 
18F46K22
(#) Bakman válasza Peet19 hozzászólására (») Márc 15, 2021 /
 
ADC-W0008: Bővebben: Link.
ADC-W0012: Bővebben: Link (valószínűleg ezzel nem tudsz mit kezdeni).
(#) Peet19 válasza Bakman hozzászólására (») Márc 15, 2021 /
 
Köszi a linkeket, így már világos. Nekem a Debuggers -nél az MPLAB SIM -nél egy sárga bogyó van. Gondolom akkor ez a bibi.
(#) colett hozzászólása Márc 16, 2021 /
 
MPLAB X új projekt generálásakor nincs assembler lehetőség csak C. Tudna valaki segíteni hogy lehet varázsolni MPASM lehetőséget ?
Köszönöm !
(#) sonajkniz válasza colett hozzászólására (») Márc 16, 2021 /
 
Dobd ki a jelenlegi MPLAB X-et és tedd fel a 3.65-ös verziót.
Én 5 éve programozok assemblyben, és ez a verzió bizonyult számomra a leg használhatóbbnak.
(#) Hp41C válasza colett hozzászólására (») Márc 16, 2021 /
 
MpAsm helyett a pic-as program van. Bővebben tárgyalják a MIcrochip fúrumon.
(#) Zsora válasza Hp41C hozzászólására (») Márc 20, 2021 /
 
Ebben a PIC Assemblerben hogyan kell változókat definiálni?
Az MPLAB XC8 PIC Assembler User's Guide-ban nem találok róla semmit.
(#) Zsora válasza Zsora hozzászólására (») Márc 20, 2021 / 1
 
Nem volt olyan egyszerű kibogozni, de már kezdem kapisgálni:

  1. ;
  2.         PROCESSOR 16F886
  3.         #include "xc.inc"
  4.        
  5.         PSECT   udata_bank0
  6. adat1:  DS      1
  7. adat2:  DS      1
  8.  
  9.         PSECT   code,abs
  10.         ORG     0000H
  11. ResVec: PAGESEL kezd
  12.         goto    kezd
  13.    
  14.         ORG     0005H
  15. ;-------------------
  16. kezd:   clrw
  17.         BANKSEL adat1
  18.         clrf    adat1
  19.         clrf    adat2
  20. ;-------------------
  21.         movlw   27
  22.         movwf   adat1
  23.         movlw   10100110B
  24.         movwf   adat2
  25.         addwf   adat1,f
  26.         incf    adat2,w
  27.         xorwf   adat1,f
  28.         bsf     adat1,2
  29.         decf    adat1,f
  30.         goto    $
  31. ;-------------------
  32.         END
A hozzászólás módosítva: Márc 20, 2021
(#) Zsora hozzászólása Márc 21, 2021 /
 
Ez most komoly, hogy a régi bitdefiníciókat is módosították, ráadásul agyatlanul?
A régen használt bithivatkozás már nem működik:
  1. btfss   STATUS,C

Ehelyett így kell most:
  1. btfss   STATUS,STATUS_C_POSN

A PIC16F886-hoz korábban a p16F886.inc fájlban voltak a definíciók, most meg a pic16F886.inc-ben.
Ebből egy részlet:
  1. // Register: STATUS
  2. STATUS                  equ 0003h
  3. // bitfield definitions
  4. STATUS_C_POSN           equ 0000h
  5. STATUS_C_POSITION       equ 0000h
  6. STATUS_C_SIZE           equ 0001h
  7. STATUS_C_LENGTH         equ 0001h
  8. STATUS_C_MASK           equ 0001h
  9. STATUS_DC_POSN          equ 0001h
  10. STATUS_DC_POSITION      equ 0001h
  11. STATUS_DC_SIZE          equ 0001h
  12. STATUS_DC_LENGTH        equ 0001h
  13. STATUS_DC_MASK          equ 0002h

Ez most mire volt jó?
(#) Peet19 hozzászólása Márc 23, 2021 /
 
Sziasztok!

Egy olyan kérdésem lenne, hogy nem-e gond az ha megszakításból átugrok egy címkére ahol tovább futna a progi, de valójában már nem ugrik vissza a megszakításhoz és nem fog lefutni a RETFIE. Ilyenkor nem telítődik a verem folyamatosan?
Egy külső megszakításkor szeretném elágaztatni a progit:

  1. ; Ellenörzöm hogy INT0 külő megszakítás érkezett-e (RB0)
  2.         BTFSS   INTCON, INT0IF
  3.         GOTO    NEXT3
  4.         BCF             INTCON, INT0IF
  5.         INCF    SW0             ; Növelem a kapcsoló állapotát
  6.         BTFSC   SW0
  7.         GOTO    SW0_1   ; A kapcsoló állapota 1 (PWM módra ugrás)
  8.         GOTO    SW0_0   ; A kapcsoló állapota 0 (FM módra ugrás)   
  9.         GOTO    MVEGE


Valójában a GOTO MVEGE soha nem futna le, de viszont ott van a RETFIE FAST. Attól tartok, hogyha nyomkodom a gombot akkor minden alkalommal megszakítást okoz de soha nem lép ki a megszakításból. Nem tudom jól látom-e de remélem azért érthetően fogalmaztam.
Előre is köszi a segítséget!
(#) zenetom válasza Peet19 hozzászólására (») Márc 23, 2021 /
 
Szia,
Megszakításba való belépés végén erősen ajánlott egy RETFIE.
Illetve "kézzel" is meg lehet oldani: stackpointer csökkentése, ha alkalmas a PIC pl. POP utasítással, és újra engedélyezni kell a megszakítást (GIE/GIEH vagy PEIE/GIEL).
Különben valószínűleg az lesz hogy egyetlen egyszer fog beugrani a megszakításra.
(#) Peet19 válasza zenetom hozzászólására (») Márc 23, 2021 /
 
Értem, köszi. Hát ez így elég gáz. Akkor kitalálok valami mást, csak így nem sok értelme van a külső megszakításnak. Akkor lehet ugyanúgy pollingolni, amit elakartam kerülni.
(#) silent15 válasza Peet19 hozzászólására (») Márc 23, 2021 /
 
Beállíthatsz egy flaget, amit tényleg poolingolni kell, vagy ha kicsi a kód amit ilyenkor végre szeretnél hajtani, akkor a megszakításba is mehet (még ha nem is elegáns).

Ha írsz konkrétabbat, lehet tudunk adni ötleteket.

UI: Félreértés ne essék, értem hogy kétfelé szeretnél menni vele, kérdés mekkora a két ág és ezek hova térnének vissza?
A hozzászólás módosítva: Márc 23, 2021
(#) zenetom válasza Peet19 hozzászólására (») Márc 23, 2021 / 1
 
Nem tudom pontosan mit szeretnél, de ahhoz hogy egy gombra reagálj, lehet nem is kell megszakítás. Illetve nem muszáj engedélyezni és belépni a megszakításvektorra.
Ugyanis (ezesetben) a INTCON, INT0IF bit értéke 1 lesz akkor is, ha a megfelelő külső jel éri a lábat, de nincs engedélyezve a megszakítás (a megszakítás engedélyezése azt állítja be, hogy megszakadjon a főprogram futása, és ugorjon a megszakításvektorra).
Tehát, ha van mondjuk egy főciklusod, akkor abba berakhatod a INTCON, INT0IF bit pollingozását (mondjuk úgy, hogy legalább 50ms-onként ráfusson a kód), és ha 1 az értéke, akkor végrehajtod amit kell, törlöd ezt a bitet, és folytatódik minden tovább.
(#) Peet19 válasza zenetom hozzászólására (») Márc 23, 2021 /
 
Leírom akkor egy kicsit részletesebben hogy mit is szeretnék. Először is a PIC egy 18F46k22.
A lényeg hogy csináltam egy PWM-et és freki modulátort amit 1 potival vezérelnék, de lenne egy nyomógomb mint kapcsoló, de nem egy ON-OFF vagy ilyesmi, hanem csak egy egyszerű mikrokapcsoló ami egy impulzust adna az egyik bemeneti lábra. Ezzel váltogatnám a kívánt módot. A perlegést megoldom, azzal nincs gond, de az elképzelésem az lenne, hogy amikor egy kapcsoló impulzus érkezik, akkor egy regiszter értékét növelem 1-el. Igazából sok varia nincs mert vagy 1 vagy 0 lesz a regiszter értéke . De ezzel a módszerrel egy csomó opciót belehetne rakni a progiba.
Ha a kapcsoló állapota 0 akkor ugorjon a PWM módra (címke ahol a hozzá tartozó programrész van), ha 1, akkor meg a FM módra, mintha egy szubrutin lenne, de nem az, csak a kapcsoló állapotától függően átugrok egy- programrészt és persze a poti éppen ahhoz a programhoz használható lenne.
Ezért gondoltam hogy ha megszakítást okoz a gomb, akkor könnyebb dolgom lesz, de most látom hogy nem ugorhatok csak úgy ki a megszakításból úgy hogy ne legyen egy RETFIE.
Lehet akkor úgy csinálom hogy 500ms-ként ránézek a kapcsoló regiszter értékére, és annak megfelelően irányítom tovább a progit, de ezen még filózok egy kicsit.

silent15: köszi.
A hozzászólás módosítva: Márc 23, 2021
(#) Peet19 válasza zenetom hozzászólására (») Márc 23, 2021 /
 
Bocsi, most esett le, ez nem is rossz ötlet.
(#) Hp41C válasza Peet19 hozzászólására (») Márc 23, 2021 /
 
Eretnek ötlet:
PIC18F családban kezelni lehet a stack -et. A pop utasítással levehető a a visszatérési cím, amit a megszakítás elfogadásakor tett fel a kontroller. Egy push utasítással egy másik cím feltehető. A retfie a "kívánt" címre fog visszatérni.
(#) Peet19 válasza Hp41C hozzászólására (») Márc 23, 2021 /
 
Ez jól hangzik, köszönöm. Mindjárt ki is próbálom.
(#) zenetom válasza Hp41C hozzászólására (») Márc 23, 2021 /
 
Az GIE-t nem kell kézzel újra engedélyezni?
(#) kissi válasza zenetom hozzászólására (») Márc 24, 2021 /
 
Ha kiadja a RETFIE-t a verem megfelelő módosítása után, akkor nem, egyébként anélkül (pl. csak GOTO, RETURN megvalósítás esetén ) igen!
(#) zenetom válasza kissi hozzászólására (») Márc 24, 2021 /
 
Köszi!
Úgy gondoltam, hogy RETFIE nélkül.
Ilyen ördögtől való dolgot talán egyszer csináltam
(#) Zsora válasza zenetom hozzászólására (») Márc 24, 2021 /
 
Már miért lenne ez "ördögtől való"? Többfelhasználós rendszereknél, ill. hibakezelő rutinokban ez teljesen mindennapos fogás.
(#) zenetom válasza Zsora hozzászólására (») Márc 24, 2021 /
 
Ha tisztában van az ember vele mit csinál, akkor nyilván jó dolog. Még az adatlap is írja hogy szoftver stack-et lehet velük így kialakítani.
De pl. egy egyszerű nyomógomb kezelésénél nem annyira indokolt.
(#) gyoran hozzászólása Márc 25, 2021 /
 
Sziasztok,
A PIC16f628A debuggolható eredeti MC Pickit3-mal? Nekem azt mondja, hogy Target Device ID (0x1060) is an Invalid Device ID. Programozni tudom, minden más -pl. ipe- megy, config az ajánlás szerint, hardware: egyszerű, nincs másra használva a pickit csatlakozás, IDE 5.45 telepítve, header AC162053 kiválasztva.
A hozzászólás módosítva: Márc 25, 2021
(#) Hp41C válasza gyoran hozzászólására (») Márc 25, 2021 /
 
Alkalmazod is a AC162053 headert? Az alacsony lábszámú kontrollereknél alkalmazni kell nyomkövetéskor.
A hozzászólás módosítva: Márc 25, 2021
(#) Josi777 válasza Zsora hozzászólására (») Márc 25, 2021 /
 
Szerintem kezdőként, különösen egy ennyire egyszerű dologra, mint egy gomb figyelése, egyáltalán nem ajánlott a verem kezelése.
(#) gyoran válasza Hp41C hozzászólására (») Márc 25, 2021 /
 
Kiválasztottam a Project propertiesben. De - ha jól látom - ez egy külön eszköz.
Azom nincs és nem ér meg több, mint 10 ezer Forintot.
A hozzászólás módosítva: Márc 25, 2021
Következő: »»   1154 / 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