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   711 / 1210
(#) Zsolt2 válasza Droot hozzászólására (») Okt 15, 2015 /
 
120(60MIPs)-140(70MIPS)Mhz a maximalis, homerseklettol fuggoen, azonben kell ugyenli, hogy az Fvco ne haladja meg a 340MHz-et. Az Fp orajelrol mukodik az osszes periferia, kivetel a PWM modul, amely az Fosc-rol mukodik. Az Fcy-van nem vagyok egeszen biztos, az adatlapban csak ennyik kaptam rola:

Idézet:
„The term, FP, refers to the clock source for all the peripherals, while FCY (or MIPS) refers to the clock source for the CPU.”
(#) Droot válasza Zsolt2 hozzászólására (») Okt 15, 2015 /
 
ÁÁ, köszi! Úgy csináltam, hogy a PLL képletet beírtam excelbe, plusz kiszámoltam az Fvco-t és még az első osztó után is van egy szabály,hogy 0,8 és 8MHz között legyen, illetve ugye az Fpllis 120-140MHz, így automatikus formázással beállítottam, hogy a megfelelő tartományokban legyen zöld színű a cella.
(#) Droot válasza Zsolt2 hozzászólására (») Okt 15, 2015 /
 
A pontos képletet le tudnád írni, amivel a 84.375MHz kijött? Nekem sokkal kevesebb jött ki az adatlapban szereplő képlettel.
(#) Zsolt2 válasza Droot hozzászólására (») Okt 15, 2015 /
 
25*((52+2)/((2+2)*2*(1+1)) = 84.375

Fosc.JPG
    
(#) cross51 válasza KaiserA hozzászólására (») Okt 15, 2015 /
 
Típus és cím ütközés a problémája, nem tudom mért a kód ismerete nélkül, de ezt próbáld meg:
  1. char buffer[20];
  2.     sprintf(buffer, "Hello World\0");
  3.     PutsLCD(buffer);

Ahol a PutsLCD-nek gondolom ez a függvény prototípusa(vagy hosnoló) void PutsLCD(const char *data) vagy void PutsLCD(char *data).
(#) Droot válasza Zsolt2 hozzászólására (») Okt 15, 2015 /
 
Én ezt most abszolúte de nem értem.
Az adatlapszerint a PLLPRE legkisebb értéke 2 lehet, ahogy a PLLPOST is.
Tehát akkor csak 25*((52+2)/((2+2)*2*(2+1))=56.25MHz-en megy, nem?
A programban a regiszterekben én is ezt állítottam be, ugye? Mert azt hittem,hogy a CLKDIVbits.PLLPOST = 1; azt jelenti, hogy a legkisebbet választom ki, ha úgy jön a sorrendben, hogy 8,16,32, stb akkor az CLKDIVbits.PLLPOST = 1; a 8-at jelenti, de ezekszerint 2-t kell oda írni.

Viszont az Fplli max 8MHz lehet és 2-es osztót választottam ki, akkor 12.5MHz, tehát minimum 4-eset kell kiválasztani, ugye

Milyen módon lehet rávenni, hogy nagyobb órajelen fusson a 25MHz-es kvarcon? 100MHz jó lenne.
(#) Pali79 hozzászólása Okt 15, 2015 /
 
Sziasztok! 16F628A-val próbálok időzítést beállítani. Azt nem tudom az adatlapból kihámozni, hogy a Timer0-t pontosan melyik bittel indítom vagy állítom le? A Timer1-nél egyértelmű a T1CON,TMR1ON ahogy a Timer2-nél is a T2CON,TMR2ON, de Timer0-nál nem láttam ilyet. Az időzítő belső órajelről megy és mivel az időzítőt néha meg kell állítanom, így erre keresek valami megoldást.
(#) benjami válasza Pali79 hozzászólására (») Okt 15, 2015 /
 
Sajnos nincs rá bit amivel tudod tiltani. A legtöbb amit tehetsz, ha az órajel forrást átkapcsolod T0CKI lábra és azt a lábat fix potenciálon tartod.
(#) Zsolt2 válasza Droot hozzászólására (») Okt 16, 2015 /
 
A kepletben a PLLPOST erteket kell beirni, vagyis 1-et. A kepletben hozza van adva +1 es beszorozva kettovel 2*(1+pll_post), igy jon ki az az ertek amit te irtal.
100Mhz-et a kovetkezo beallitassal lehet elerni
PLLDIV=22
PLLPOST=0
PLLPRE=1
25*((22+2)/((2+1)*2*(0+1))=100Mhz
A PLL bementi frekvenciaja 25/3=8.(3)Mhz es az Fvco 200Mhz.
(#) Pali79 válasza benjami hozzászólására (») Okt 16, 2015 /
 
Köszi, én is erre jutottam, de nem nagyon tetszik ez a megoldás, illetve ha az a láb kimenetre van állítva akkor is bezavarhat?
(#) nedudgi válasza Pali79 hozzászólására (») Okt 16, 2015 /
 
Az nem megoldás, hogy ha nem kell számolni, akkor elmented, majd ha mehet a számolás visszatöltöd a számláló értékét?
Mondjuk, bukod az előszámlálót, ha van.
(#) Pali79 válasza nedudgi hozzászólására (») Okt 16, 2015 /
 
Az a baj, hogy megszakítást kell generáljon a túlcsordulásra és egy megadott időpontban kellene induljon.
(#) fsub válasza Pali79 hozzászólására (») Okt 16, 2015 /
 
És ha az időre az INTCON regiszter T0IE túlcsordulás engedélyező bitjét tiltod, majd ha újra mehet a számolás és visszatöltöd a TMR0 értékét, ismét engedélyezed a megszakítást?
(#) Pali79 válasza fsub hozzászólására (») Okt 16, 2015 /
 
Kipróbálom, mindjárt szimulátorban.
(#) Pali79 válasza fsub hozzászólására (») Okt 16, 2015 /
 
Ez most így jónak tűnik szimulátorban, este az éles próbán meglátom majd. Köszi!
(#) Droot válasza Zsolt2 hozzászólására (») Okt 16, 2015 /
 
Köszönöm! Így már teljesen világos.
(#) Droot válasza Zsolt2 hozzászólására (») Okt 16, 2015 /
 
Még egy kérdés: Az nem baj, hogy a PLL-be 8.33MHz megy be és max 8MHz mehet?
(#) Zsolt2 válasza Droot hozzászólására (») Okt 16, 2015 /
 
Erdemes egyet novelni a bemeneti oszton, ugy bizonsagosabb (reggel nem tunt fel nekem, hogy nagyobb az eloirnal, ugy latszik meg tul koran volt).
PLLPRE = 2
PLLDIV = 30
PLLPOST=0
25*((30+2)/((2+2)*2*(0+1))=100Mhz
(#) Droot válasza Zsolt2 hozzászólására (») Okt 16, 2015 /
 
Köszi!
(#) don_peter hozzászólása Okt 16, 2015 /
 
Uraim, kérnék egy kis felvilágosítást illetve segítséget.
Van egy 128x64-es LCD kijelzőre írt rutinom amely a teljes felületre rajzolna ki egy képet.
Így néz ki:
  1. const static rom unsigned char pic[] = {0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // ez egészen tart 1024-ig.
  2. void lcd_image2(static const rom char* graphic){
  3.         unsigned char x, y;
  4.         for(y = 0; y < 64; y++){
  5.                 if(y < 32){
  6.                         for(x = 0; x < 8; x++){
  7.                                 lcd_comm(0x80 | y);
  8.                 lcd_comm(0x80 | x);
  9.                                 lcd_data(graphic[2*x + 16*y]);
  10.                                 lcd_data(graphic[2*x+1 + 16*y]);
  11.                         }
  12.                 }else{
  13.                         for(x = 0; x < 8; x++){                                        
  14.                                 lcd_comm(0x80 | (y-32));                       
  15.                 lcd_comm(0x88 | x);
  16.                                 lcd_data(graphic[2*x + 16*y]);
  17.                                 lcd_data(graphic[2*x+1 + 16*y]);
  18.                         }
  19.                 }
  20.         }
  21. }

Látható, hogy a pic[] tömb elég nagy ahhoz, hogy ne férjen bele a normál memóriába, ezért a PIC programmemóriájába kell raknom.

A problémám az, hogy mikor ki akarom íratni a kijelzőre a képet akkor zagyvaságokat jelenít meg.
Ha a kép kisebb és bele fér a sima memóriába akkor probléma nélkül kiírja, de ha átteszem ROM-ba akkor zagyvaságot ír ki.

Miért lehet ez és mi lehet a megoldása?
Előre is köszi.
(#) cross51 válasza don_peter hozzászólására (») Okt 16, 2015 /
 
Ha ezt a 16 byte-os tömböt írod ki akkor is? A C18-hoz nem nagyon értek de okozhat a nagyobb tömbnél problémát a near és a far azonosító.
(#) don_peter válasza cross51 hozzászólására (») Okt 16, 2015 /
 
Köszi, a típussal volt a baj, most már megy rendesen.
Az értékek meghaladják az 1bájtos határt ezért kell a minimum 2bájtnyi hely.
  1. lcd_data(graphic[2*x + 16*y]);
  2. lcd_data(graphic[2*x+1 + 16*y]);

  1. unsigned char x, y;
  1. unsigned int x, y;

Vagy 5órája szívok vele
Van ilyen
A hozzászólás módosítva: Okt 16, 2015
(#) szucsistvan123 hozzászólása Okt 16, 2015 /
 
Sziasztok! A PICkit 3 nem akar csatlakozni a PIC16f690-hez, hiába nyomom a connect gombot. Ez miért van?
Májki féle LCM3-at programozok.

fail.jpg
    
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Okt 16, 2015 /
 
Most ezt írja:
The target circuit may require more power than the debug tool can provide. An external power supply might be necessary.
Connection Failed.
(#) nedudgi válasza szucsistvan123 hozzászólására (») Okt 16, 2015 / 1
 
A PICkit3 nem tud elég tápot adni. Használj külső tápot.
(#) cross51 válasza szucsistvan123 hozzászólására (») Okt 16, 2015 / 1
 
Ezt a problémát egyre többet látom és tapasztaltam is, amióta elindítottam az IPE-ét azóta vagy connection failed vagy The target ..., miközben az áramkör jó ha maximum 10mA vesz fel. Pontos megoldást nem tudok mondani valahogy orvosoltam az IPE és MPLAB hol ezzel hol azzal kapcsolódtam míg végül elértem azt, hogy jelenleg lehet hibátlanul használni.

Szerintem ami megoldást jelenthet fixen az két esélyes vagy a gépet újra húzni vagy PICkit3 elvinni a ChipCAD-hez hogy programozzák újra a bootloadert, de sajnos nem tudom, hogy az IPE-től PICkit3 "száll el" vagy szoftver szinten akad össze valami(a gépen).
(#) szucsistvan123 válasza nedudgi hozzászólására (») Okt 16, 2015 /
 
Akkor is van valami baja, ha adok neki.
Az gáz, ha a Pickit utolsó lába (aux) nincs bekötve?
(#) szucsistvan123 válasza szucsistvan123 hozzászólására (») Okt 16, 2015 /
 
Ja és a programozó az kínai klón.
(#) cross51 válasza szucsistvan123 hozzászólására (») Okt 16, 2015 / 1
 
Ez a kínai klón verzió volt, hogy egszer működött vagy most volt az első tesztje?
(#) szucsistvan123 válasza cross51 hozzászólására (») Okt 16, 2015 /
 
Első teszt. Az utolsó láb azt nem kell bekötni?
Következő: »»   711 / 1210
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