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   1132 / 1203
(#) usane válasza lastewer hozzászólására (») Szept 24, 2020 / 1
 
A 17.-ben is írod. Akkor minden írás előtt kimenetre, olvasás előtt bemenetre kellene álltani.
Viszont ha ez valami IIC-hez vagy 1-wire-hez hasonló kommunikációs (gondolom) akkor azt is figyelni kell mikor engedi el vagy húzza fel a PIC. Nem tudom milyen eszközhöz kapcsolódik, mi az alappállapot, de valószínű a PIC a master tehát kimenet mint alapállapot és csak ha olvasni kell bemenetre állytani aztán vissza kimenetre.
A hozzászólás módosítva: Szept 24, 2020
(#) Hp41C válasza lastewer hozzászólására (») Szept 24, 2020 / 1
 
Egy port regiszter írásakor a kimeneti regiszter íródik. A port olvasásakor a közvetlenül bemeneteket olvassuk be. Ha elérhető a kontrollerben a port LAT regisztere, akkor az is olvasható, mit is írtunk a kimeneti regiszterbe utoljára.
Mi is történik egy PORTB.F7 = ~PORTB.F7 alakú utasításnál:
Beolvassuk a port bitek bemeneteinek aktuális értékét, a 7. bitet az ellentettjére állítjuk és beírjuk a kimeneti regiszterbe. Egy analóg módba állított bemenetet mindig 0 -nak olvasunk, egy digitális bemenetet a rajta levő feszültség nagyságától függően olvassuk 1 -nek vagy 0-nak. Egy digitális kimenetet is a rajta levő feszültség nagyságától függően olvassuk 1 -nek vagy 0-nak. Itt lehet probléma a túlterhelés, ami az 1 kimeneti vezérlés ellenére nem engedi, hogy a lábon kialakuljon a 1 -hez tartozó minimális szint.
Tovább bonyolítja a helyzetet, hogy az össze bitet egyszerre olvassuk be az adott pillanatban. Lehet, hogy az előző művelet által előírt szint még nem áll be, amikor a beolvasásra sor kerül. Az is előfordulhat, hogy analóg módba állított lábon digitális kimenetet használunk. stb.
Ilyen esetekben a RAM területet célszerű egy rekeszt használni a port kimeneti regisztere helyett. Azon végrehajtani a fentihez hasonló kiolvasás - művelet - kiírás (RMW) műveletet és az eredményt átmásolni a port regiszterébe (movff vagy movf - movwf utasításokkal).
(#) lastewer válasza Bakman hozzászólására (») Szept 25, 2020 /
 
Szia,

Arra kapcsolok 5V-ot. Egyenlőre még üres.

Viszont van egy másik problémám is. Az a gond, hogy hol működik, hol nem.

Adok rá tápot, világít az RA0 - ra kötött led majd elkezd villogni az RB7- es lábon levő led, ami így tökéletes is, csakhogy ha elveszem a tápot, majd ismét ráadom, akkor világít az RA0 ledje, de viszont nem kezd el villogni az RB7 ledje.

Ha megint elveszem a tápot és visszaadom, akkor nem is világít az RA0.

  1. // Fő program
  2. void main() {
  3.  
  4.          cts = 0;               // Számláló kezdő értéke 0
  5.          initTimer();
  6.  
  7.  
  8.          TRISB = 0;      // Minden B láb kimenet
  9.          TRISA.F0 = 0;   // RA 0 kimenet
  10.          
  11.          PORTA.F0 = 1;    // Statusz jelző led bekapcsol
  12.  
  13.          UART1_Init(4800); // Inicializáljuk a hardveres UART-ot 4800 baud rate-re
  14.          Delay_ms(100); // Várunk 100 ms-t a port beállítására
  15.          head = 0; // Biztos ami biztos
  16.  
  17.  
  18.          UART1_send_string(dev_id); // Elküldjük az inicializálás befejezését
  19.  
  20.  
  21.          while (1) // Innen fut a pic kód folyamatosan -> végtelen ciklus
  22.          {
  23.             if (cts >= 5000)    // 10000 * 0.1 ms = 1 mp
  24.             {
  25.                                   PORTB.F7 = ~PORTB.F7;   // B lábak villogtatása
  26.                                   cts = 0;                // Számláló reset
  27.             }
  28.             if(PORTA.F1 == 1)
  29.             {
  30.                     UART1_send_string(on_cm);
  31.                     Delay_ms(100); // Várunk 100 ms-t a port beállítására
  32.                     TRISA.F1 = 0;
  33.                     PORTA.F1 = 0;
  34.                     TRISA.F1 = 1;
  35.            
  36.             }
  37.  
  38.          } // while adat fogadó-küldő ciklus vége
  39.  }



- Az RB1 RX láb fel van húzva a VDD tápfeszre 1K ellenállással.
- A VDD és VSS lábon van 100nF - es kerámia kondi.
- 16MHZ oscillátor, 2 db 22pf - es kondival GND-re húzva.
- Az MCLR/VPP láb 10K ellenállással VDD tápfeszre húzva.

Mi lehet a hiba? (Proteusban rendesen működik, élesben nem.)
A hozzászólás módosítva: Szept 25, 2020
(#) usane válasza lastewer hozzászólására (») Szept 25, 2020 /
 
Idézet:
„ha elveszem a tápot, majd ismét ráadom,”

Mennyi idő múlva adod rá ismét. Hová és mivel? Összerakott áramkör saját táppal? PicKit adja a tápot? BOR hogy van beállítva?
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Szia,

Összerakott áramkör, saját táppal. A táp tuti hogy jó, mert egy ugyanilyet már raktam össze és azzal nincs semmi gond.

Kihúzom és visszadugom. 1 mp-kb . Ha várok 5 mp-t, akkor néha jól kezd el működni, néha nem.

Mindjárt csinálok egy videót róla.

BOR? Mellékeltem egy képet a beállításokról.
A hozzászólás módosítva: Szept 25, 2020

igy.jpg
    
(#) usane válasza lastewer hozzászólására (») Szept 25, 2020 /
 
Nem azért kérdeztem, hogy jó-e a táp, hanem, hogy mennyi puffert tartalmaz. Az 1mp kevés. A 100nF-os kondi is fenn tudja addig tartani a PIC-et ha nincs egyéb fogyasztó az áramkörben. Az 5mp már-már jó lehet, főleg ha bekapcsolod a BOR-t és magasra állítod. Nem tudom milyen PIC, mennyire állítható benne. Ha nem hagyod teljesen lemerülni a puffereket az áramkörben egy köztes feszültésggel a PIC meghülyülhet azért nem indul el olyankor. A BOR ezt igyekszik megelőzni, adott feszültség alatt reseteli a PIC-et.

szerk: Aha. Látom a képet, 628a. Ebben fix a BOR(brown-out) kb 4V ,kapcsold be. Ha akkor is sokat kell várni még a power up timert is bekapcsolhatod.
A hozzászólás módosítva: Szept 25, 2020
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Értem. PIC16F628A . Mindjárt töltök fel videót.
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Itt a video : Video

Innen gyorsabban letölthető : Video

Bekapcsoltam a power up és a BOR-t. Nem segített.
A hozzászólás módosítva: Szept 25, 2020
(#) usane válasza lastewer hozzászólására (») Szept 25, 2020 /
 
Aha. Látom. Egy kis hardveres debuggal ki lehetne deríteni hol akad el. Kezdetnek mondjuk a whilhe előtt bekapcsolod az RB7-et. Megnézni, hogy az initen túlmegy-e olyankor. Ha igen akkor valószínűleg a timer környékén kell keresni a hibát.
Egyébként mi az a kis panel a PIC mellett? Sötét a kép nem tudtam kivenni.
A hozzászólás módosítva: Szept 25, 2020
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Köszi, csinálom.

Az egy step down tápegység. 12v ból csinál 5v-ot.
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Azt nem értem igazából, hogy egy másik panelen tökéletesen megy, szinte ugyanez a kód.
(#) Bakman válasza lastewer hozzászólására (») Szept 25, 2020 /
 
Az RX láb (RB1) hova van kötve?
(#) usane válasza lastewer hozzászólására (») Szept 25, 2020 /
 
Ugyanilyen a másik panel? Az a step-down adja a tápot a PIC-nek? Mennyire egyenletes? Lehet kéne mögé egy kis puffer nem? Sötét volt a video nem láttam van-e rajta.
(#) lastewer válasza Bakman hozzászólására (») Szept 25, 2020 /
 
Az be van kötve a VDD-re 1k ellenálláson keresztül.
(#) lastewer válasza usane hozzászólására (») Szept 25, 2020 /
 
Igen a step down adja a tápot a Picnek. Közben van bekötve egy 100nF - es kondi.

A másik panelen is ugyanígy van bekötve step down adja a tápot a picnek ott is. Nincs másik kondi és megy rendesen.

Mellékeltem képet, ez volt a videón.

Jobb oldalon 2 db ellenállás, egyik 10k az MCLR láb van vele felhúzva VDD-re , a másik 1k és az RX láb van felhúzva a VDD-re vele.

Lent bekarikázott 2 db kondi, annak csak a GND részei találkoznak a Pic GND részeivel, mivel oda kerülne majd egy IC, de az egyenlőre nincs berakva.
A hozzászólás módosítva: Szept 25, 2020
(#) Bakman válasza lastewer hozzászólására (») Szept 25, 2020 / 1
 
A Step-down konverter enegedélyező lábát nem kell bekötni? A tápfeszültséget tudod ellenőrizni oszcilloszkóppal? Esetleg a DC-DC konvertert cserélni?
(#) lastewer válasza Bakman hozzászólására (») Szept 25, 2020 /
 
Nincs oszcilloszkópom sajnos, nem kell bekötni.

Tudom cserélni, de nem gondolnám hogy az lenne a gond, mert ha pc usb-ről hajtom a pic-t, akkor is labilis a működése.
(#) Bakman válasza lastewer hozzászólására (») Szept 25, 2020 / 1
 
Véletlen nem 628-as PIC-ed van 628A helyett? Előbbieknek volt alacsony sebességű változatuk is, pl. PIC16F628-04 (max. 4 MHz).
(#) lastewer válasza Bakman hozzászólására (») Szept 25, 2020 /
 
Nem. Ez 628A .
(#) slimcolt hozzászólása Szept 26, 2020 /
 
Sziasztok!

Nekem egy általános kérdésem lenne az SPI kommunikációval kapcsolatban.
Két PIC között szeretnék SPI kommunikációt létrehozni.
A kérdésem az lenne, hogy a master oldalon így kell lefolytatni az SSPxBUF írását-olvasását?

Íráskor:
Írunk hasznos byte-ot
Olvasunk dummy-t

Olvasáskor:
Írunk dummy-t
Olvasunk hasznos byte-ot

A Slave esetében is így kell, ha így kell?
(#) usane válasza lastewer hozzászólására (») Szept 26, 2020 / 1
 
Cseréld ki a 2 PIC-et. Ha teljesen ugyanaz a szoftver és csere után is labilis, akkor panelon lesz valami hiba. Vezetősáv szakadás, forrasztási hiba, oszcillátor, stb. Ha csere után a másik lesz labilis akkor a PIC-ben valami nem frankó. Kerámia kondik sem mindig tökéletesek. volt már a kezemben újonnan vett selejtes.
(#) Bakman válasza slimcolt hozzászólására (») Szept 26, 2020 /
 
Íráskor nem feltétlen kell olvasni, mehet egymás után a bájtok írása, megvárva, amíg az előzőleg küldött adat ki nem ér az SSPBUF regiszterből (megszakítás igény szerint, SSPIF).

Slave üzemmódban az SS láb alacsony szintre kerülése indítja a modult. Ha kap órajeleket akkor szépen kitolja magából az SSPBUF tartalmát, miközben fogadja a mester felöl érkező adatot. Ha vége a vételnek és jó is (nem szakadt meg pl. a 4. bit után), akkor kaphatsz egy megszakítást (SSPIF).
Szinte mindegy, hogy mikor töltöd fel az SSPBUF regisztert, az mindenképpen fejeződjön be az órajel elindulása előtt. Ha a mester több bájtot olvas a szolgától, akkor igyekezni kell a szolga regiszter feltöltésével. A szolgába időközben érkezett adatot nem kötelező olvasni, ha arra nincs szükséged.

A rendszertől függ, hogy a mester oldal felöl nézett olvasáskor az első bájt dummy-e avagy hasznos. Éppen fel lehet használni arra is, hogy egyből utasítást küldj a szolgának. A szolga "látni fogja" az első bájtot is, az az ottani oldalon bekerül az SSPUF regiszterbe.
A hozzászólás módosítva: Szept 26, 2020
(#) lastewer válasza usane hozzászólására (») Szept 26, 2020 /
 
Kicseréltem az oscillátort és eddig úgy néz ki megy. Viszont másik probléma:

Az RA0 lábat nem tudom villogtatni. Az RB7 - es lábat viszont igen. Miért?
(#) benjami válasza lastewer hozzászólására (») Szept 26, 2020 / 1
 
Analóg komparátort kapcsold ki (CMCON regiszter).
(#) Marko Ramiusz hozzászólása Szept 26, 2020 /
 
Jó szerencsét! Minden bizonnyal itt több a tájékozottabb olvasó, mint Én. Olyan link-ekhez szeretnék hozzájutni, ahol a PIC-ek gyakorlati felhasználására mutatnak példákat. Magyarul, mire tudom használni a környezetemben. Ha lehet nem "bármire, mindenre" jellegű ötleteket vánék, hanem konkrétumokat. Köszönöm a válaszokat. Üdv.: Joe
(#) usane válasza lastewer hozzászólására (») Szept 26, 2020 / 1
 
Azt is tudnod kellene. Analóg -ot kapcsold ki. Az RA0 egyben analóg bemenet is.
Bár nem tudom, ha kimenetnek van állítva zavarja-e.
Hová raktad a kódban az RA0 villogtatást? Eddig nem láttam sehol.
A hozzászólás módosítva: Szept 26, 2020
(#) usane válasza Marko Ramiusz hozzászólására (») Szept 26, 2020 /
 
Időzités, különböző szenzorok lekérdezése és az alapján egyéb eszközök pl kazán és szelepek vezérlése, világítás dimmelés, CNC vezérlés, és még sorolhatnám. Nem lehet túlzottan leszűkíteni. Amihez mikrovezérlő kell ahhoz használható.
Linkgyűjteményben nem tudok segíteni.
(#) Bakman válasza Marko Ramiusz hozzászólására (») Szept 26, 2020 /
 
Ilyet keress: arduino ideas. Amit ott megcsinálnak Ardunioval, azt PIC-kel is meg lehet csinálni. Találat van kismillió, egész estét betöltő program lehet.
(#) Marko Ramiusz válasza Bakman hozzászólására (») Szept 26, 2020 /
 
Szeretném alkalmazni valamire az elektronikát. Egész évet betöltő! Éppen ilyen válaszra számítottam. Köszönöm.
(#) lastewer válasza usane hozzászólására (») Szept 26, 2020 /
 
Az RB7 helyett tettem be. Működik minden. Köszi szépen nektek
Következő: »»   1132 / 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