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   1038 / 1203
(#) usane válasza Auf hozzászólására (») Júl 30, 2018 /
 
Na, én már kicsit megkavarodtam. Most akkor 8MHz-en megy vagy nem? És 8Mhz-en ha megy akkor milyen Baud-al? Ha 8-on megy 32-n is mennie kell. Mindkét frekvencián beállítható a 100 és a 400 kHz Baud is. Próbáld ki 8Mhz-en 100-al is meg 400-al is.
Ellenőrizd le a kódot, hogy a KK jól legenerálta e. Engem a múltkor átvert, igaz csak szimulációban, de a PLL-t valahogy nem vette be.
(#) Auf válasza Auf hozzászólására (») Júl 30, 2018 /
 
Ezekkel a kódokkal megy. A legelsőre felvázolt "Primery oscillator" beállítással.
Feltöltöttem a kódot amit az mcc csinál.
Az mcc.h -ban a lényeges sor:
#define _XTAL_FREQ 24000000UL

(a két baud érték az a 100 és 400kHz)
Az I2C:
  1. void InitI2C(void)
  2. {      
  3.         I2C1BRG = 0x0013; //    I2C1BRG = 0x004F;
  4.         I2C1CON = 0x1200;
  5.         I2C1RCV = 0x0000;
  6.         I2C1TRN = 0x0000;
  7.         I2C1CON = 0x9200;
  8. }


Például az UART:
  1. void UART1_Initialize(void)
  2. {
  3.     U1MODE = 0x0000;   // uart enable off
  4.     U1STA = 0x0000;
  5.     U1BRG = 0x0000;
  6.     U1MODEbits.UARTEN = 1;  // enabling UARTEN bit
  7.     U1STAbits.UTXEN = 1;
  8.     U1TXREG = 0;
  9. }

mcc.c
    
(#) pipi válasza kszabi hozzászólására (») Júl 30, 2018 /
 
Hali!
És egy idézőjel is mintha hiányozna...
meg floatba, nem %x-el kell tenni szerintem...
Hibaüzenet nincs?
(#) kszabi válasza pipi hozzászólására (») Júl 31, 2018 /
 
Hello!
Nincs hiba, csak 0 marad a változók értéke.
Soros porton kapok adatot ebben a fotmában pl:
“r34AB0500,12CE0500”
Ha az r nem teszem a tömbbe akkor is ugyanaz
(#) Sasmadár válasza kszabi hozzászólására (») Júl 31, 2018 /
 
Szia!

char temp[]={"12CE0500 34AB0500"};
sscanf(temp,"%lX %lX", &a, &b);

Ha a és b float: a=1.300166E-27, b=3.185487E-7 értéket kap.
Ha a és b unsigned long: értékük a temp-ben lévő két hexadecimális érték.
(#) Auf válasza Zsora hozzászólására (») Júl 31, 2018 /
 
Ma tudtam kipróbálni a kapott ötleteket, sikerrel jártam, hála a tippeknek, segítségnek. Rendben megy, sikerült. Köszönök minden gondolatot.
A megoldást az hozta, hogy a CLKDIV <DOZEN> bitet bekapcsoltam és mellé modosítottam a DOZE<2:0> bitkombinációt 1:2 -höz arány létrehozásához. Az MCC 1:4 -hez arányt állított be és, ami furcsa, egyébként kikapcsolja a DOZEN bitet, amitől ugyebár nem is számít, na de mindegy.
Az adatlap 95-ödik oldalán található ezeket a biteket tartalmazó regiszter leírása.
(#) usane válasza Auf hozzászólására (») Aug 1, 2018 /
 
Mondtam, hogy az órajelet nem jól állítja be, de ettől függetlenül 1:1-el is mennie kellene.
(#) Zsora válasza Auf hozzászólására (») Aug 1, 2018 /
 
Szerintem MC-éknél nagyon kutyulnak. A PIC24HJ doksiban jó az órajel előállítását mutató ábra, de a 24F és 24FJ esetében már nem igazán, ugyanis nincs feltüntetve a 2-es osztás, amiből Fcy következik. Valamint az I2C BRG előállításánál mindig Fcy-re hivatkoznak, holott a perifériák órajele az Fp-ből származik, ami nem feltétlenül azonos Fcy-vel.
A 24HJ esetében Fp=Fcy, viszont 24F és 24FJ esetében Fp=2*Fcy. (DOZE= 1:1 esetén)
(#) Zsora válasza Zsora hozzászólására (») Aug 2, 2018 /
 
Kíváncsiságból csináltam pár I2C időzítéssel kapcsolatos mérést PIC24HJ256GP210A mikrovezérlővel. A tapasztalatok:

1.) CP=40MHz, DOZE= 1:1, (PLL) mellett nem megy az I2C
2.) CP=40MHz, DOZE= 1:2, (PLL, FCY=20MHz) mellett viszont működik
3.) CP=25MHz (DOZE= 1:1, PLL) a max. frekvencia, amin még jó
4.) CP=26,25MHz (DOZE= 1:1, PLL) frekvenciától már nem megy

Képek mellékelve a 4 esetről. Az I2C alapfrekvenciája FI2C=2*FP. FI2C=50MHz és BRG=15 mellet a magas periódus ideje 24 ciklus, az alacsony periódusé pedig 16 ciklus.
Érdekesen működik a DOZE, ugyanis az aránytól függően csak minden második, negyedik, nyolcadik, stb. alacsony impulzust engedi át. Az I2C időzítése (TBRG) nem függ a TCY-tól (DOZE beállítástól), mégis TCY=40MHz mellett nem működik. Érdekes, pedig a korábbi adatlapban ehhez is megadnak BRG értéket.
(#) abacs hozzászólása Aug 2, 2018 /
 
Sziasztok Kezdő vagyok a témában és elakadtam...nem tudom, hogy mi az oka a hibának. A segítséget előre is köszönöm

1.png

2.png
   
(#) Hp41C válasza abacs hozzászólására (») Aug 2, 2018 / 1
 
  1. #include "xc.h"
(#) sany hozzászólása Aug 4, 2018 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni.
Adott egy JDM égető, ami megfelelően működik. 16F876A IC-t kellene felprogramoznom. Ezzel az égetővel eddig még soha nem programoztam be 16F876A - s IC-t, ezért kérném a segítségeteket. A kérdésem az lenne, hogy az égető számozott lábait,melyik lábakra kössem a 16F876A esetén?
Köszönöm!
A hozzászólás módosítva: Aug 4, 2018
(#) pipi válasza sany hozzászólására (») Aug 4, 2018 / 1
 
A 84-esen feltüntetett nevű lábakat ugyanugy megtalálod a 876-on
(#) sany válasza pipi hozzászólására (») Aug 4, 2018 /
 
Köszönöm. A felprogramozás sikerrel járt.
Azt hittem ennél a PIC-nél más lábakat is használni kell.
A hozzászólás módosítva: Aug 4, 2018
(#) Zsora válasza Zsora hozzászólására (») Aug 4, 2018 /
 
Volt kis időm, így PIC24F08KA101 mikrovezérlővel is csináltam pár mérést:
FP-t kitettem a REFO, FCY-t pedig a CLKO lábra, így mértem őket szkóppal. SCL és SDA lábakat 910ohmmal húztam fel tápra.
FCY=16MHz (FP=32MHz) mellett nem megy az I2C, csak 8MHz-nél. DOZE= 1:2 beállításnál viszont FP=32MHz esetében is jó.
FCY=8MHz frekvencián (FP=16MHz, DOZE=1:1) a legkisebb működő BRG érték a 6, viszont 1MHz-es FSCL-hez 5-öt kellene beállítani, de akkor a BRG 9 impulzus helyett csupán 1-et állít elő adatküldésnél. Ugyanez a helyzet FCY=8MHz és DOZE=1:2 (FP=32MHz) esetében is: a legkisebb működő érték a 13, de 12 kellene 1MHz-es FSCL-hez, ahol is megint csak 1 BRG impulzus jön ki a 9 helyett.

Tehát PIC24F mikrovezérlőn - az adatlap ellenkező állításával szemben - nem működik 1MHz-en az I2C busz, de kisebb sebességen sem, ha 16MIPS-en járatjuk azt.

Képek:
1.) FP=16MHz (PLL), DOZE= 1:1, FCY=8MHz, BRG=6
2.) FP=32MHz (PLL), DOZE= 1:2, FCY=8MHz, BRG=13
(Sárga jel az FCY, kék jel az FSCL.)
(#) pipi válasza Zsora hozzászólására (») Aug 4, 2018 /
 
Hali!
Erratát nézted?
Én a sorosnál futottam bele a KA sorozatnáll, a transmit buffer bit nem jól működik
(#) Zsora válasza pipi hozzászólására (») Aug 4, 2018 /
 
Üdv!
Néztem, de nem ír semmit az I2C-ről, sem a 24F/KA-nál, sem a 24HJ/GP-nél.
Növeltem a felhúzó ellenállásokat 2,4kohmra (ez közel a megadott "tipikus" 2,2Kohm érték); azzal a felfutási idő megnőtt, a lefutási pedig csökkent, közel azonos hosszra. Viszont az teljes periódus ideje 1/2 TCY-vel hosszabb lett és már a korábban írt 13-as és 6-os értékekkel sem megy az I2C, mert így csak 3 impulzust állít elő a BRG a 9 helyett. (8 bit + ACK)
(#) Zsora válasza pipi hozzászólására (») Aug 5, 2018 /
 
Na... Leesett, hogy miért nem ment az I2C 1MHz-en.
Alapesetben be van kapcsolva a Slew Rate Control, ami arra szolgál hogy megakadályozza a hírtelen áramlökéseket. Ez ugye azzal jár hogy a lefutási idő igencsak megnő, ami szépen látszik is a szkópon. A funkciót letiltva (DISSLW=1) a lefutó él közel függőleges lesz (80ns osztásnál). És láss csodát; máris lejjebb vihető a BRG, elérhető az 1MHz.
Megállapítható tehát hogy a fel- és lefutási sebesség hatással van az időzítésre és az I2C modul működésére. Viszont 16MIPS-en (FCY=16MHz) így sem megy.

A mellékelt kép az FCY=8MHz (FRCPLL), DOZE=1:1, BRG=4, DISSLW=1 melletti működést mutatja. A pontos 1MHz-hez BRG=5 tartozna, ill. a felhúzó ellenállást kb. 1Kohmra kellene csökkentenem. (Vagy a 4-es érték mellé a felhúzást kellene még jobban növelnem.)
A hozzászólás módosítva: Aug 5, 2018
(#) kszabi válasza Sasmadár hozzászólására (») Aug 6, 2018 /
 
Helló!
Ez lett a meg oldás,
A sscanf hexából csak int vagy long vátozóba olvas.
A hozzászólás módosítva: Aug 6, 2018
(#) usane hozzászólása Aug 6, 2018 /
 
Üdv!

2k2 felhúzás a PGC lábon okozhat gondot programozáskor?
(#) Pali79 válasza usane hozzászólására (») Aug 6, 2018 /
 
Igen, bezavarhat.
(#) usane válasza Pali79 hozzászólására (») Aug 6, 2018 /
 
Pláne ha még egy másik PIC-be is csatlakozik. MSSP-t kilőhetem, marad az UART.
Köszi.
(#) Pali79 válasza usane hozzászólására (») Aug 7, 2018 /
 
Nem feltétlenül! Be kell tenni egy jumpert ami leválaszt a lábáról mindent a programozás idejére.
(#) ktamas66 válasza Pali79 hozzászólására (») Aug 7, 2018 /
 
Én csináltam egy átkapcsolót, hogy ne kelljen mindig széthúzogatni.

DSC05550.JPG
    
(#) usane válasza Pali79 hozzászólására (») Aug 7, 2018 /
 
Ez az amit nem akartam, de lehet kap egy dip switchet.
Ktamas, ez 2 pólusú? Hol lehet ilyet kapni?
A hozzászólás módosítva: Aug 7, 2018
(#) ktamas66 válasza usane hozzászólására (») Aug 7, 2018 /
 
3 áramkörös, a tápokat nem kapcsolja. Valahonnan bontottam.

DSC05553.JPG
    
(#) abacs hozzászólása Aug 7, 2018 /
 
Mi a teendő ilyenkor?

kérdés.png
    
(#) silent15 válasza abacs hozzászólására (») Aug 7, 2018 /
 
Nekem a klón pickit3 adott ilyen gondot, ha már a minimálisnál jobban terheltem. Ha teheted, vedd ki a picket, programozd fél és tedd vissza.

Ui: ha van rá mód ahogy írja tápold meg kívűlről és akkor ki se kell szedni talán.
A hozzászólás módosítva: Aug 7, 2018
(#) abacs válasza silent15 hozzászólására (») Aug 7, 2018 /
 
Tulajdonképp terhelve egyáltalán nincs mert csak programot szeretném rárakni
Ezt használom:

1.jpg
    
(#) silent15 válasza abacs hozzászólására (») Aug 7, 2018 /
 
Bekötés jó, illetve be van kapcsolva, hogy a pickit adja a tápot?
Következő: »»   1038 / 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