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   685 / 1207
(#) Pali79 hozzászólása Jún 27, 2015 /
 
Digitális potméterben létezik sztereó?
(#) kt hozzászólása Jún 27, 2015 /
 
Sziasztok.
Watt által készített WLPT mini v4 es programozót használtam eddig WPB-el.
Tegnapi nap mikor elindítottam a WPB valami dll-t hiányolt, ezért újratelepítettem .
Azóta nem ismer fel a program egy pic-et sem.
WinPic800 felismeri, viszont nem tudja írni őket, történt már veletek ilyen, mi lehet a probléma ?
(#) zenetom válasza Pali79 hozzászólására (») Jún 27, 2015 /
 
(#) Pali79 hozzászólása Jún 27, 2015 /
 
Ohh! Zsír! Köszönöm szépen!
(#) lastewer hozzászólása Jún 27, 2015 /
 
Sziasztok!

Számot szeretnék kiíratni lcd kijelzőre , de valamiért nem sikerül.

Így szeretném kiíratni (Közben kap értéket , csak azt nem másolom be , túl hosszú lenne.):
  1. unsigned int sec;
  2. LCD_Out(2,1,sec  );

De valami más karakter jelenik meg a kijelzőn , miért lehet ez ? (MikroC)

valami a változó kiíratással lehet.
A hozzászólás módosítva: Jún 27, 2015
(#) zenetom válasza lastewer hozzászólására (») Jún 27, 2015 /
 
Szia!
Valószínűleg így az ASCII kódját írja ki (próbáld ki, a "sec" változónak adj decimális 97-es értéket, elvileg egy "a" betűt kéne kiírnia..).
Ezesetben vagy valami másik parancs kell, vagy valami átalakító függvény. De szerintem mindjárt kiguglizom.
(#) lastewer válasza zenetom hozzászólására (») Jún 27, 2015 /
 
Úgy nem jelenik meg semmi.
(#) zenetom válasza lastewer hozzászólására (») Jún 27, 2015 /
 
Deklarálj egy string változót, majd alakítsd át az integert stringgé, és azt írd ki, valahogy így:
  1. unsigned int sec;
  2. char szoveg[3];
  3. .
  4. .
  5. IntToStr(sec,szoveg);
  6. LCD_Out(2,1,szoveg);


Bár ez az IDE nem az én világom, de ennek így szerintem működnie kéne.
(#) lastewer válasza zenetom hozzászólására (») Jún 27, 2015 /
 
Tökéletes , köszönöm
(#) Zsora válasza don_peter hozzászólására (») Jún 27, 2015 /
 
Teljesen ugyanaz a hozzáférés menete, mint mármely más egyszerű SRAM esetén.
A lényeg hogy betartsd a megfelelő időzítéseket. (Ami nem túl nehéz ha lassú mikrovezérlőt használsz...)
Én pl. AS7C34098A-12 típustú SRAM-ot használok 40MHz-es PIC24HJ-vel.

Olvasás:
1. (Cím PORT kimenet)
2. (Adat PORT bemenet)
3. /WE tiltás, /OE, /CE engedélyezés
4. Cím beállítása
5. (Várakozás)
6. Adat olvasás
7. /CE, /OE tiltás
(Többszörös olvasás esetén a 4.-6. lépések ísmétlődnek.)

Írás:
1. (Cím PORT kimenet)
2. /OE, /WE tiltás, /CE engedélyezés
3. (Adat PORT kimenet)
4. Cím beállítása
5. Adat írása
6. /WE engedélyezés
7. (Várakozás)
8. /WE tiltása
9. (Várakozás)
10. /CE tiltása
(Többszörös írás esetén a 4.-9. lépések ísmétlődnek.)

Még valami: A vezérlőbusz PORT-ja folyamatosan kimenetként üzemel, de minden vezetéke kb. 10k-val a tápra van kötve hogy a PORT nagyohmos állapotában a SRAM biztosan tiltva legyen.
A hozzászólás módosítva: Jún 27, 2015
(#) don_peter válasza Zsora hozzászólására (») Jún 27, 2015 /
 
Eddig még nem működik, de ma már félre teszem.
Holnap majd ismét ránézek..
Egyelőre a prototípuson nincsenek felhúzó ellenállások, gondolom most tesztelésre ezek elhagyhatóak.
A hozzászólás módosítva: Jún 27, 2015
(#) don_peter válasza Zsora hozzászólására (») Jún 28, 2015 /
 
Tegnap este még vacakoltam vele,de semmi.
PIC18F442-ot hasznalok 40MHz-en.
Az idozitesekre nem ns-t hanem ms-t hasznalok.
Az olvasás talán működik, bár azt nem ertem , hogy a fenébe lehet egy üres SRAM-ban adat.
(#) lastewer hozzászólása Jún 28, 2015 /
 
Sziasztok!

Tudna valaki egy példa programot NTP lekéréshez ? MikroC-ben. Sehol nem találok.
(#) bbalazs_ válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Mindenfajta RAM-ban MINDIG van adat, csak az a kerdes,hogy az neked megfelelo-e.
Furcsa lenne, ha a RAM bejelentene, hogy pl. bocs, de azon a cimen nincs semmi
(#) don_peter válasza bbalazs_ hozzászólására (») Jún 28, 2015 /
 
Statikus memória. Ha nem kap áramot elvileg nullazik. Nem tartja me az adatot.
(#) Bakman válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Annó úgy magyarázta a tanárunk, hogy a tároló jellegű eszközöknek bekapcsoláskor jogukban áll bármilyen állapotot felvenni. Minden bizonnyal, miután a processzor felébred, első lépésként nullázza a RAM-ot, azután tölti fel adattal vagy egyszerűen azt a területet nem olvassa, amire még nem írt.
A hozzászólás módosítva: Jún 28, 2015
(#) don_peter válasza Bakman hozzászólására (») Jún 28, 2015 /
 
Értem, ez esetben találkozhatók random adatokkal.
Akkor ez a talány számomra megoldódott.
Már csak azt kellene tudnom miért is nem tudok beírni adatot.
Ezen rutinokat írtam és használom: (ezer variációban kiproklamáltam már, de valahol nem stimmel)

  1. /*********************************************
  2. * SRAM olvasása
  3. **********************************************/
  4. char SRAM_READ(union11 cim){
  5.         char result;
  6.         TRISB = 0xff;
  7.         SRAM_OE = 0;
  8.         SRAM_CE = 0;
  9.         ADDRESS(cim);
  10.         Delay_ms(1);
  11.         result = PORTB;
  12.         SRAM_OE = 1;
  13.         SRAM_CE = 1;
  14.         TRISB = 0x00;
  15.         return result;
  16. }
  17.  
  18. /*********************************************
  19. * SRAM írása
  20. **********************************************/
  21. void SRAM_WRITE(union11 cim, char adat){
  22.         SRAM_CE = 0;
  23.         ADDRESS(cim);
  24.         BYTE_WRITE(adat);
  25.         SRAM_WE = 0;
  26.         Delay_ms(1);   
  27.         SRAM_WE = 1;
  28.         Delay_ms(1);   
  29.         BYTE_WRITE(0x00);
  30.         SRAM_CE = 1;
  31. }

Kukkantsatok rá, előzőleg felraktam az adatlapot is..
Előre is köszi..
(#) ktamas66 válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Én megfordítanám a logikát: az adatbusz alapértelmezetten HiZ legyen (bemenet). Írásnál: cim ki, CE, WE, Tris, adat ki, WE, CE.
(#) Zsora válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Gondolom az írás alatt az /OE láb végig magas állapotban van...
A mikrovezérlőre csak a SRAM kapcsolódik?
Nem tudom mi értelme van az írás végén a 0 adatnak, de végül is az nem oszt, nem szoroz.
Valamint az olvasás végén az adatbuszt miért állítod kimenetre? Biztonságosabb ha csak írás idejére működik kimenetként, elkerülendő a buszkonfliktust.
Nos... Nekem a rutin így is jónak tűnik.
(#) don_peter válasza ktamas66 hozzászólására (») Jún 28, 2015 /
 
Az az érdekes, hogy szimulátorban működik és jók a rutinok.
De élőben nem ír be semmit, csak ami random mód benne van azt olvassa ki.

Bemenetre csak olvasásnál kell állítani az adatbusz, minden másra kimeneten kell lennie, hiszen ha nem olvasok akkor valószínűleg írok, ha egyiket sem akkor meg ne lebegjen..
(#) don_peter válasza Zsora hozzászólására (») Jún 28, 2015 /
 
Termesztésem amikor írok OE magas, WE alacsony, amikor olvasok WE magas OE alacsony.
Csak az SRAM van rajta és persze egy kijelző ami mutatja az adatokat.
A 0-ás adatra azért van szükség, hogy az adatport kinullázódjon az írás után és ne befolyásolja az olvasást.
Tapasztaltam, ha nincs nullázva az adatport akkor benne marad az utoljára beírt adat és hibás adatot fog eredményezni..

Az adatbuszt kimenetre állítom mert olvasásnál bemenetre kell állítani.
Ha vége az olvasásnak ne maradjon bemeneten mert akkor lebeghet.
0x33
0x11
Adatoknak kellene lennie mivel ezeket írom be..
A hozzászólás módosítva: Jún 28, 2015
(#) don_peter válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Köszönöm srácok a segítséget.
Minden jól működött a chip volt hibás.
Szerencsére találtam még itthon pár darabot és azokkal már egyből működött a dolog.
Már tiszta rosszul voltam, hogy nem működik
Köszi még egyszer..
(#) ktamas66 válasza don_peter hozzászólására (») Jún 28, 2015 /
 
Örülök, hogy működik, ennek ellenére az adatbusznak az a dolga, hogy lebegjen , csak az vezérelje akire épp tartozik. Az adatlap tWHZ ideje pont erre vonatkozik az 5-ös megjegyzéssel együtt.
(#) don_peter válasza ktamas66 hozzászólására (») Jún 28, 2015 /
 
De ne lebegjen
Most már megy és ennek örülök..
Dobok is fel egy vidit a ki mit késztet topikba
Köszi srácok.
(#) killbill válasza ktamas66 hozzászólására (») Jún 28, 2015 /
 
Idézet:
„Örülök, hogy működik, ennek ellenére az adatbusznak az a dolga, hogy lebegjen”
Ezt azert nem mondanam. Az adatbuszt felhuzo ellenallasokkal szokas tapra huzni pont azert, hogy amikor senki nem hajtja meg, akkor se lebegjen. Tudni illik ugyanis, hogy egy CMOS bemenet nem szereti, ha lebeg, azaz ha nincs rajta H vagy L sizntnek megfelelo feszultseg. Koztes allapotban egy CMOS bemeneti aramkor (az IC-n belul) igen nagy aramot vehet fel a taprol, akár gerjedhet is.
A hozzászólás módosítva: Jún 28, 2015
(#) ktamas66 válasza killbill hozzászólására (») Jún 28, 2015 /
 
Igazad van, ne lebegjen. Azért van a WPU, hogy ne hagyja. Inkább arra kívántam rámutatni, hogy az adatlap alapján a WE lefutó éle után 20ns-ig még kimenetként funkcionálhatnak a lábak, így az szembemehet a PIC kimenetével. Úgy látszik az IC-k kibírják ezt, csak minek így csinálni, ha nem így kell.
(#) Zsora válasza ktamas66 hozzászólására (») Jún 28, 2015 /
 
Ha az /OE végig alacsony szintű, akkor az IO lábak nem lesznek sose kimenetek. Az adatlap azt az esetet mutatja, mikor az írás az /OE magas állapotában történik.
(#) killbill válasza ktamas66 hozzászólására (») Jún 28, 2015 /
 
Mindenekelott, abban teljesen egyetertek veled, hogy alaphelyzetben tri-state-ben legyen minden. Alapvetoen igy szokas ezt csinalni. De. A fenti programban a read fugvenyben: OE = 1; CE = 1; TRIS = 0; Igy garantalt, hogy nem irnak egymasra. Az iras fuggvenyben meg semmikeppen nem irhatnak egymasra, mert a RAM OE nem megy low szintre.
(#) Pali79 hozzászólása Jún 28, 2015 /
 
Az miért van, hogy MPlab-nál a Watch ablakban az Add Symbol rész nem aktív? Nem tudom megnézni a változóm értékei így.
(#) zenetom válasza Pali79 hozzászólására (») Jún 28, 2015 /
 
Következő: »»   685 / 1207
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