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   1076 / 1203
(#) Johnny0004 válasza Bakman hozzászólására (») Márc 3, 2019 /
 
16F1827-nél még nem volt gondom.
(#) eSDi válasza Johnny0004 hozzászólására (») Márc 3, 2019 / 1
 
Ide is beírom, mert itt szebben látszik. Másik fajta BASIC, ADC olvasás. MokroE Library kicsit limitált.
  1. Function GetRAWTemperature() As Word
  2.         ADCON0.ADON = True
  3.         Dim Counter As Byte
  4.         Dim Sample As Word
  5.         Dim ADCData As Word
  6.         Sample = 0
  7.         ADCData = 0
  8.         For Counter = 1 To 16 Step 1
  9.                 ADCON0.GO_NOT_DONE = True
  10.                 While ADCON0.GO_NOT_DONE = True
  11.                         ASM:        NOP
  12.                 Wend
  13.                 Sample.HB = ADRESH
  14.                 Sample.LB = ADRESL
  15.                 ADCData = ADCData + Sample
  16.         Next Counter
  17.         ADCON0.ADON = False
  18.         GetRAWTemperature = ShiftRight(ADCData, 4)  '16-al oszt�s
  19. End Function
(#) Bakman válasza Johnny0004 hozzászólására (») Márc 3, 2019 / 1
 
Nem is egyezik a kettő ADC modulja. 16F1827 még a régebbi módot használja.
(#) Johnny0004 válasza Bakman hozzászólására (») Márc 3, 2019 /
 
Akkor ez a baj.
(#) eSDi válasza Johnny0004 hozzászólására (») Márc 3, 2019 /
 
Nem baj az, annyira nem különböző. Azzal a beállítással amit privátban írtam, pedig működnie kellene. Én inkább azt mondom, hogy a MikroE kutyul bele a dologba.
(#) Johnny0004 válasza eSDi hozzászólására (») Márc 3, 2019 /
 
Értem, köszi a segítséget.
(#) NickE hozzászólása Márc 3, 2019 /
 
PIC24-nél a veremmutató beállításával van problémám. A debugger szépen működik, tudom léptetni utasításonként a programot, ha W15-be 0x800-at töltök. Reset után alapból is erre az értékre áll be W15. Viszont ha bármi más értékre állítom W15-öt, akkor a programot ugyan lefordítja, de nem működik a léptetés. Mi a probléma? Csak a debugger vacakol, vagy nem így kell a veremmutatót más értékre állítani?

  1. .include "xc.inc"
  2. .bss
  3.     x1: .space 2
  4.     x2: .space 2
  5.     x3: .space 2
  6.  
  7. .text
  8. .global __reset
  9. __reset:
  10.     mov #0x820, W15
  11.     mov #1, W0
  12.     mov W0, x1
  13.     mov #2, W0
  14.     mov W0, x2
  15.     mov #3, W0
  16.     mov W0, x3
  17.     nop
  18.     nop
  19.     nop
  20.     call sub
  21.     nop
  22.     nop
  23.     nop
  24. vege:
  25.         goto vege
  26.  
  27. sub:
  28.     mov W0, W1
  29.     return
  30. .end
(#) Johnny0004 válasza eSDi hozzászólására (») Márc 3, 2019 /
 
Na csak sikerült végre, jól mondtad az ADCON2 volt a gond. Közben már megy belső referenciával a 12bit-es ADC. Valamint az enkóder is megszakítással. Nagyon köszi mégegyszer!
A hozzászólás módosítva: Márc 3, 2019
(#) usane válasza glaci hozzászólására (») Márc 4, 2019 /
 
Látom megoldódott. Gratula!
(#) Zsora válasza NickE hozzászólására (») Márc 4, 2019 /
 
Ne felejtsd el beállítani a veremmutató felső értékét sem!
  1. ;-----------------------------------
  2. __reset:   mov   #__SP_init,w15
  3.            mov   #__SPLIM_init,w0
  4.            mov   w0,SPLIM
  5. ;-----------------------------------
(#) glaci válasza usane hozzászólására (») Márc 4, 2019 /
 
Köszi! Dolgozunk tovább!
(#) NickE válasza Zsora hozzászólására (») Márc 5, 2019 /
 
Már működik, de nem változtattam semmit, szóval nem tudom, mitől javult meg. Az SPLIM beállítása ajánlott, de nem kötelező. Az adatlap szerint SPLIM akkor válik csak aktívvá, ha értéket töltünk bele.
(#) slimcolt hozzászólása Márc 7, 2019 /
 
Sziasztok!

Nekem olyan kérdésem lenne a PIC16LF18456 programozása közben, hogy ha én használok egy timer2-t és kikapcsolom, akkor a T2TMR értéke törlődik? Valamint a PR regiszter is resetelődik?
Ha újra bekapcsolom, akkor a PR regiszter értékét újra be kell állítanom?
Az adatlap valami ilyesmit ír.

"The T2TMR and T2PR registers are both directly readable and writable. The T2TMR register is cleared
and the T2PR register initializes to FFh on any device Reset. Both the prescaler and postscaler counters
are cleared on the following events:
• A write to the T2TMR register
• A write to the T2CON register
• Any device Reset
• External Reset Source event that resets the timer.
Important: T2TMR is not cleared when T2CON is written."
(#) superuser válasza slimcolt hozzászólására (») Márc 7, 2019 /
 
Idézet:
„ha én használok egy timer2-t és kikapcsolom, akkor a T2TMR értéke törlődik?”


A doc szerint én azt gondolom nem.
A T2CON.ON bittel kapcsolod be és ki a timert, az adatlap pedig leszögezi, hogy T2TMR nem törlődik T2CON írásakor.
T2PR még inkább logikus számomra, hogy marad a beállított értéken egy resetig.
(#) eSDi válasza slimcolt hozzászólására (») Márc 8, 2019 /
 
Mint ahogy írták, normál kikapcsoláskor nem törlődik semmi. Viszont ha PMD-vel kapcsolod ki (gondolom ebben is van), akkor elveszi tőle a tápot, így ekkor esélyes, hogy törlődik. Talán leírja valahol az adatlap, még nem néztem meg.
(#) slimcolt válasza superuser hozzászólására (») Márc 8, 2019 /
 
Köszi.
Tehát ha egy kis időre kiszeretném kapcsolni a timer2-t, akkor elég csak az ON bit-et törölni.
Amikor újra bekapcsolom és azt szeretném, hogy előről kezdje a számlálást, akkor elvileg elég a T2TMR regisztert törölni a bekapcsolás előtt? A PR regiszter tartalma meg elvileg változatlan lesz.
(#) superuser válasza slimcolt hozzászólására (») Márc 8, 2019 /
 
Igen.
(#) szucsistvan123 hozzászólása Márc 9, 2019 /
 
Heló!

PIC-nél a LATX és a PORTX utasítások között mi a külömbség C programozási nyelv esetén? Vagy ez csak Assemblynél számít?
Köszi!
(#) Hp41C válasza szucsistvan123 hozzászólására (») Márc 9, 2019 / 1
 
PORTX olvasása a kivezetések aktuális állapotát olvassa be (0 -t, ha analóg módban van a láb), a LATX a utoljára beírt értéket.
Pl. a PIC -hez képest a a lábon lassan áll be a kimeneti érték (avagy be sem áll a magas szint) a következő programrészlet hibásan fut le:
PORTA |= 0x01;
PORTA |= 0x02;

Hiszen ezek a műveletek beolvassák a PORTA regiszter értékét, elvégzik a műveletet és kiírják az eredményt. A második művelet csak akkor lesz jó, ha az első hatása már 1 utasítás végrehajtási idő múlva magas szintet eredményez a RA0 lábon.
(#) superuser válasza szucsistvan123 hozzászólására (») Márc 9, 2019 / 1
 
Ha bemenetként használod, PORTX regisztert kell olvasd, hogy a bemenet állapotát megismerd.
Ha kimenetként használod, LATX regisztert kell írjad, hogy a kimenet állapotát megváltoztasd.
(#) szucsistvan123 válasza superuser hozzászólására (») Márc 9, 2019 /
 
Értem, köszönöm!
Ha kimenetként használom mondjuk a PORTA-t, és a PORTA = 0xFF értékadással a kimeneti érték bekerül a LATA regiszterbe is? (csak kíváncsiságbol kérdezem).
(#) szucsistvan123 válasza Hp41C hozzászólására (») Márc 9, 2019 /
 
És még egy kérdésem lenne.

Pontosam mit jelent, a a láb analóg módban van?
Nézegettem az MPLAB Code Configuratort, és az egyes lábaknál be lehet kepcsolni ezt a funkciót. Ez ADC esetén használatos? Ha igen, akkor miért van az output esetén is ez a választási lehetőség, holott nincs is benne DA konverter.
(#) Hp41C válasza szucsistvan123 hozzászólására (») Márc 9, 2019 / 1
 
Idézet:
„Pontosan mit jelent, a a láb analóg módban van?”

Digitális bemenetek esetében a lábakon általában a logikai 0 ill. a logikai 1 feszültség tartományba eső feszültség szintre kell számítani, a köztes szintek csak rövid időre fordulnak elő. A bementi jelváltozása igen gyors lehet, a zavarok kiszűrésére Schmidt - trigger -es fokozatot is használhatnak. A köztes szinteken nagyobb áram is folyhat a bemenetre kapcsolt illesztő fokozat tranzisztorain. (Egy időben vezető P ill. N csatornás FET pl. az inverterben. Ld. C-MOS áramkörök felépítése).
Az analóg módba állított lábak esetében a bemeneti feszültség teljes terjedelmében nem folyhat ilyen jellegű áram, mivel a digitális fokozatot lekapcsolják a bemenetről vagy letiltják.
Nem csak az A/D -hez kapcsolódhat ilyen analóg mód, hanem a komparátor, erősítő, D/A egységekhez is.
Attól, hogy egy kimenet analóg módba van állítva, még lehetséges kimenetnek használni. A TRISX regiszter megfelelő bitje engedélyezi a digitális meghajtót.
Ha a TRISX megfelelő bitje 1, a kivezetés analóg, port bitet beolvasva 0 -t kapunk. Sajnos ilyenkor a LATX megfelelő bitjét olvasva is 0 -t kapunk....
Ha a TRISX megfelelő bitje 0, és a kivezetés analóg módban van, az analóg egységek a kimeneti logikai szintet kapják meg és ez a szint jelenik meg a lábon is, de port bitként beolvasva 0 -t kapunk.
(#) szucsistvan123 válasza Hp41C hozzászólására (») Márc 9, 2019 /
 
Így már érthető, köszönöm!
(#) usane hozzászólása Márc 9, 2019 /
 
Felfutó éleket mivel jobb számolni? Capture-el vagy CN-al?
(#) superuser válasza usane hozzászólására (») Márc 9, 2019 /
 
interrupt lábbal
(#) Pali79 válasza usane hozzászólására (») Márc 9, 2019 /
 
Hát szerintem attól függ mi a cél...
(#) usane válasza superuser hozzászólására (») Márc 9, 2019 /
 
Azt nem írtam lehetőségnek. Ahhoz új nyák kellene, azt meg már nem csinálok másikat. Át kellene tervezni az egészet.

Pali79: A cél egy visszacsatolás. 555-ös jelét szeretném számolni, amivel a program majd kezd valamit.
(#) Pali79 válasza usane hozzászólására (») Márc 9, 2019 /
 
Akkor szerintem egy sima külső megszakítással. Én is hasonlót csináltam most. Egy régi 16F628A PORTB,0 megszakítással léptetek egy számlálót amit egy 2×16-os LCD-re írok ki.
(#) Bakman válasza usane hozzászólására (») Márc 9, 2019 /
 
Egy kontroller mellé mire kell 555-ös IC?
Következő: »»   1076 / 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