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   237 / 1209
(#) Balagemann2031 válasza kormika hozzászólására (») Ápr 10, 2012 / 1
 
Hello! A belső eprom kezelése nem olyan bonyolult, mint elsőre látszik... Mellékelek neked egy asm-fájlt amivel én teszteltem az eprom kezelést. Ha ebből valami nem világos, kérdezz nyugodtan!

Untitled.asm
    
(#) kormika válasza Balagemann2031 hozzászólására (») Ápr 10, 2012 /
 
Köszönöm szépen a segítségedet, a kommentek már elegendő infót nyújtottak, már megy is a cucc, teszt idejére picit átvertem a PIC-et, 1 Hz helyett 1 kHz-et kapott, így 6 perc alatt eljutott a 100 óráig
(#) vilmosd válasza kormika hozzászólására (») Ápr 10, 2012 /
 
En ezt ugy csinaltam annakidejen, hogy a PIC indulaskor beolvasta az EEPROM-bol a szamot, majd novelgette az esemeny hatasara. Kijeloltem egy bemenetet tapfesz figyelesre, es ha elment a tap beirta az EEPROM-ba az utolso allast. A tapkor ugy volt kialakitva, hogy nagy erteku elkot tartalmazott. Amikor elment a tap meg volt ideje beirni. Azert is fontos ez a megoldas, mert az EEPROM csak veges szamu irast bir ki.
(#) kissi válasza menyus hozzászólására (») Ápr 10, 2012 /
 
Szia!

Tedd be a Watch-ba a PCLATH regisztert és már tudod is módosítani ( persze célszerűen a megfelelő lépés előtt! )!

Steve
(#) matheattila hozzászólása Ápr 10, 2012 /
 
Sziasztok, most, hogy látom, hogy eeprom-ról van szó gondoltam megkérdem, hogy az itt bemutatott szenzorokra (gyorsulásmérő, giroszkop és megnetométer) is vonatkozik ugyanaz mint az EEPROM-okra, hogy adott számú írást/olvasást lehet végrehajtani velük vagy ezeknél nem számít, mert nem találtam erre utaló leírást az adatlapokban.
Köszönöm előre is.
(#) potyo válasza matheattila hozzászólására (») Ápr 10, 2012 /
 
Ezek a szenzorok csak olvashatóak, nem? Mert olvasásra nincs az eepromnál sem korlátozás.
(#) sany hozzászólása Ápr 10, 2012 1 /
 
Sziasztok!
Egy PIC16F628A -ról lenne szó. Az RA0,RA1,RA2 mindig bemenetként szeretném beállítani, a többi RA portot pedig kimenetként. Ekkor jó a következő inicializáció?
  1. void main()
  2. {
  3. cmcon=0x07;
  4. trisb=0x00;
  5. trisa=0x07;
  6. porta=0x07;
  7. portb=0x00;
  8. }
(#) Pepebá hozzászólása Ápr 11, 2012 /
 
Üdv.
Ezzel a megoldással alakítom át a 2 jegyű bin. számot BCD-re.
int n, dig, count;
int pBIN=55, pBCD=0;
count = 0;
for (n=0; n<4; n++) {
dig = pBIN%10;
pBIN = pBIN/10;
pBCD = (dig< count += 4;
}

Viszont szükségem lenne 4 bin. jegyről BCD-re alakításra és nem tudok, nem találok rá megoldást. (Mplab/C18)
Kérem a segítségeteket, köszönönöm.>>>
(#) matheattila válasza potyo hozzászólására (») Ápr 11, 2012 /
 
Írhatóak is, mert be lehet állítani a paramétereiket, pl: méréstartomány, mintavételezési frekvencia, működési üzemmód, de ezeket úgy is csak indításkor kell beállítani, mert azon kívül csak olvasásra fogom használni szögmérés miatt, legfeljebb kevesebb alkalommal inicializálom
(#) icserny válasza Pepebá hozzászólására (») Ápr 11, 2012 /
 
Ez, amit most bemásoltál, mitől nem négyjegyű? (Mellesleg én unsigned int változótípust használnék...)
(#) menyus válasza kissi hozzászólására (») Ápr 11, 2012 /
 
Szia!

Köszönöm, közben rájöttem magamtól. (Mire nem vagyok képes ha gondolkodom kicsit... )

Működik már szinte minden amit szerettem volna. Valóban a lapváltásokkal rontottam el az egész kódot, tényleg jobb ez a PAGESEL dolog mint manuálisan állítgatni a biteket. És a szimulátor is nagyon jó. A kérdés..egy olyan megszakítást (és egyáltalán megszakítást..) amit pl egy USART vált ki, hogyan tudok a szimulátorral tesztelni? Mert a szimulátorban nem tudom "úgy intézni" hogy megszakítás történjen, mint gyakorlatban.
(#) menyus válasza matheattila hozzászólására (») Ápr 11, 2012 /
 
Hú de jó dolgok vannak ezen az oldalon, igaz nem olcsók...
(#) Hp41C válasza menyus hozzászólására (») Ápr 11, 2012 /
 
Szia!

Debugger / Settings / Limitation - Uart nem szimulálható.
A megoldás:
-1: Debugger / Settings / Uart1 I/O:
Enable Uart1 IO - kipipálni
Output / Window - kipipálni.
-2: Debugger / Stimulus / Register injection:
RCREG, file, megadandó a file neve... Apply
-3: Save stimulus - a további használatra...

A mellékletben egy 16F648A -ra készült stimulus (A figyelmeztetés ellenére - "## SCL Builder Setup File: Do not edit!!"-, a típust átírhatjuk), amelyik a saját könyvtárában elhelyezett input.txt -ből veszi az uart szimulációhoz az adatokat.

Újrafordítás után indítva, az Output ablak Uart fülét kiválasztva láthatjuk a kontrollerünk által küldött üzeneteket.

- Megszakítás: A PCLATH -t is menteni kell, a mentés után a megszakítás kiszolgáló rutin lapjára kell állítani, a visszatérés előtt a mentett értéket vissza kell állítani.

Olvastad?
(#) izenahogyishivnak válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
Szia!

Én most PIC18F1320 alatt akartam a printf("hello"); -t kiíratni a SIM UART ablakba, de "out of bounds memory access" hibát ír. Debugger > Settings > Uart1 IO alatt bekapcsoltam a Enable Uart1 IO-t és a window is ki van választva.

Teszteléshez kellene nekem a printf függvényt használni, de nem akar összejönni.
(#) icserny válasza izenahogyishivnak hozzászólására (») Ápr 11, 2012 /
 
Ha úgyis csak szimulálni akarsz, próbáld ki egy nagyobb memóriájú típussal!

Vagy a memóriazabáló printf() helyett írj egyszerűbb függvényeket a kiíratáshoz! A PICula projektemben outString(), out4hex() vagy outdec() segítségével történik a kiíratás, amelyek a putchar() függvényt hívják meg.
(#) izenahogyishivnak válasza icserny hozzászólására (») Ápr 11, 2012 /
 
Sikerült, már megy.
(#) menyus válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
Köszi. Nagyon vágod ezt, de jó neked...

A megszakításban mentem a PCLATH ot is, a mentésekben és visszaállításokban is szerepel. Van egy PCLATH_TEMP váltózóm erre, sőt még az FSR t is mentem (FSR_TEMP) , ezt régebben írta valaki (ha jól emlékszem pont te Te ) hogy kell, azóta így csinálom.

Nem olvastam ezt a cikket még, nem is tudtam hogy van ilyen témájú leírás. De nekiülök izibe...mert pont ezzel szívok.
(#) sany válasza sany hozzászólására (») Ápr 11, 2012 /
 
Nem jó ugye?
(#) Hp41C válasza sany hozzászólására (») Ápr 11, 2012 /
 
Szia!
Melyik C fordítót használod? Próbáld ki szimulátorral - MpLab -ben az MpLab SIM. Írj egy villogtató rutint a PORTA egy kimenő bitjére. Vedd fel a kimenetet az MpLab logikai analizárorára. Egyetlen duktató van a 16F628(A) -ban,m a komparátor, azt kikapcsoltad.
(#) sany válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
MikroC PRO -t használok. Gyakorlatban még nem próbáltam.
(#) sany válasza sany hozzászólására (») Ápr 11, 2012 /
 
Ez így nem működik.
Úgy meglehet adni valahogy, hogy mindegyik portnak megadom , hogy mi legyen bemenet vagy kimenet külön - külön?
(#) zenetom hozzászólása Ápr 11, 2012 /
 
Hali!
Még nem használtam a PIC-ben kódvédelmet, abban kérnék megerősítést, hogy ha bekapcsolom a kódvédelemet, akkor az csak az ICSP lábak felőli olvasást akadályozza meg? Tehát a program futásában ez a kódvédelem nem vesz részt?
(#) Hp41C válasza zenetom hozzászólására (») Ápr 11, 2012 /
 
Szia!
A futására csak akkor lehet hatása, ha a kód vagy adat EEProm területről olvas vagy oda ír adatot. A koncigurációs bitekkel ezeket a funkciókat lehet engedélyezni, tiltni.
(#) Hp41C válasza sany hozzászólására (») Ápr 11, 2012 /
 
Szia!
Mégis mi nem működik?
- RA0 .. 2: gondolom működik bemenetnek,
- RA3: működnie kell, mint kimenet,
- RA4: Nyitott kollektoros kimenet - kell egy felhúzó ellenállás,
- RA5: Csak bemeneti láb,
- RA6 .. RA7: Az oszcillátor kivezetései is egyben. Csak belső oszcillátorral használható bemenetként vagy kimenetként.

Output.JPG
    
(#) zenetom válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
Viszont van "Table Read Protection" bitek, meg sima "Code Protection" bitek, "Boot Block Code Protection", "Data EEPROM Code Protection"...
A "Table Read Protection" nem azt akadályozza meg, hogy a program futása közben végrehajtsa a táblaolvasás (TBLRD*) műveletet?
Szerk.: 18F2550-ről van szó.
(#) Hp41C válasza zenetom hozzászólására (») Ápr 11, 2012 /
 
Pont erről szerettem volna írni:
A Table Read Protection aktiválása nem engedélyezi a programtár kiolvasását arról a területről, amire vonatkozik, még a saját program számára sem.
A Table Write Protection aktiválása nem engedélyezi a programtár tartalmának módosítását azon a területen, amire vonatkozik, még a saját program számára sem.
Code Protection aktiválása nem engedélyezi az ICSP-n való kiolvasást azon a területen, amire vonatkozik.
Data EEPROM Code Protection aktiválása az adat EEProm területre nem engedélyezi az ICSP-n való kiolvasást.
(#) zenetom válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
Értem, köszönöm a választ!
(#) sany válasza Hp41C hozzászólására (») Ápr 11, 2012 /
 
RA0,RA1,RA2 nem működik , mint bemenet . Írtam egy kis teszt programot, de nem akarja érzékelni bemenetként a PIC. Íme a tesztprogram:
  1. void main()
  2. {
  3. cmcon=0x07;
  4. trisb=0x00;
  5. trisa=0x07;
  6. porta=0x00;
  7. portb=0x00;
  8. while(1)
  9. {
  10. if(porta.f0==1 && porta.f1==1 && porta.f2==0)
  11. {
  12. portb.f0=1;
  13. }
  14. else
  15. {
  16. portb.f0=0;
  17. }
  18. }
  19. }
(#) Crea hozzászólása Ápr 11, 2012 /
 
Sziasztok!

Valamilyen kellemetlen okból C18 fordításakor kapom ezt a hibát:


Error - section '.idata_szakd.o' can not fit the section. Section '.idata_szakd.o' length=0x00000135
Errors : 1

PIC18F4455-el dolgozom, és valószínű ez lehet a baja, hogy definiálva van a következő néhány sor:

  1. unsigned char data,rdata,data1,karakter='x',kar,
  2. buff[32]="X=       T=    CTk=  C  HV=     ",
  3. inic[32]="AD Inicializalas                ".
  4. menu[32]="Start >> *      Beallitasok >> #",
  5. men1[32]="Parameterek >> #AD konfig. >> 0 ".
  6. menp[32]="Valtozok >> #   Anyag tabla >> 0",
  7. menv[32]="x >> 1  A >> 2  Q >> 3  n >> 4  ";


Valakinek van ötlete hogy hogyan tudnám eltárolni ezeket? :S elvileg az adatmemóriába kell hogy pakolja ahol van 2048 bájt hely, de mégsem :S
(#) icserny válasza Crea hozzászólására (») Ápr 11, 2012 /
 
Egy másik topikban volt róla szó a közelmúltban, itt nézz körül!
Következő: »»   237 / 1209
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