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   525 / 1210
(#) vilmosd válasza Pepebá hozzászólására (») Máj 19, 2014 /
 
A TMR1 es a CAPTURE segitsegevel viszonylag konnyu megoldani.
(#) Pepebá válasza vilmosd hozzászólására (») Máj 19, 2014 /
 
Köszi a válasz, csak azért ennél többre lenne szükségem.
Mi az a CAPTURE? és a viszonylag könnyű megoldás konkrétabban mit jelent?
A hozzászólás módosítva: Máj 19, 2014
(#) usane válasza don_peter hozzászólására (») Máj 19, 2014 /
 
Idézet:
„Igaz, felhúzó.....”

Nem, lehúzót használsz. Ha földre húzod lehúzod, a tápra húzod felhúzod.
Te lehúzod. Aktív 1 logikát használ a keypadod.
Bár a mikrokontrolleres környezetben valóban inkább a felhúzást szokták alkalmazni és aktív 0 logikát, de így is működnie kell. Ráadásul a proteusos keypadot nem tudom át lehet-e állítani aktív 0-ra. Azt viszont nem értem, hogy az ozlopokat lehúztad a sorokat meg nem. Legalábbis a kapcsoláson amit beraktál azon nincs.
Ami az elakadást illeti, tuti, hogy valahol elakad a progam, ezt bizonyítsa az is, hogy ha a watchdog megy akkor resetel, tudja a watchdogot törölni.
Egy kód segítene a felderítésben, vagy mint írták előttem a szakemberek, tegyél bele nyomkövetést.
A hozzászólás módosítva: Máj 19, 2014
(#) usane válasza usane hozzászólására (») Máj 19, 2014 /
 
Nem tudtam módosítani, kimaradt a nem szó a watchdog törlése elől.
(#) CHrissDock válasza usane hozzászólására (») Máj 19, 2014 /
 
Ha privatba at kuldom delutan az asm kodot akkor at tudod nekem javitani? Mert az igazsag az hogy en ehhez nem ertek :/
(#) usane válasza CHrissDock hozzászólására (») Máj 19, 2014 /
 
Hello!
Ha arra gondolsz amit vilmosd javasolt akkor természetesen meg tudnám csinálni, nem bonyolult, de nincs időm vele foglalkozni, tele vagyok munkával. Sajálom.
Kérd meg őt vagy valaki mást.
(#) vilmosd válasza Pepebá hozzászólására (») Máj 19, 2014 /
 
Ugye van adatlapod a PIC-hez? Keress benne ilyet :CAPTURE/COMPARE/PWM
MODULES. Neked a Capture mod hasznalhato. El kell inditani a TMR1-et a megfelelo sebesseggel. a CCPx lab valtozasanak hatasara (felfuto, vagy lefuto) a TMR1 aktualis erteke beirodik a CCPRx regiszterbe, es ezt csinalja minden valtozasra. Bonuszkent meg interruptot is csinal. Az interrupt lekezelesenel ki kell szamolni a regi es az uj ertek kulonbseget, majd ebbol kiszamolhatod a ket jel kozott eltelt idot.
(#) vilmosd válasza CHrissDock hozzászólására (») Máj 19, 2014 /
 
Es valami szuper titkos a program, hogy nem tudod ide feltenni?
(#) don_peter válasza usane hozzászólására (») Máj 19, 2014 /
 
"Azt viszont nem értem, hogy az oszlopokat lehúztad a sorokat meg nem."
Sorokat emelem egyesével magas szintre LAT regiszterrel. (Kimenet)
Oszlopokat ellenőrzőm PORT regiszterrel. (Bemenet)
4.7K-s ellenállással lehúzom a bemeneteket földre, hogy ne lebegjen.
Kimeneteket elé nem tettem semmit, de kipróbáltam 470Ohm ellenállással is földre húzva.
Semmi változás.

Ha nincs ott ellenállás akkor nincs random leakadás.
Képen minden látszik..., még mindig nem jöttem rá a hiba okára pedig már majdnem mindent átírtam.
(#) mrobi válasza don_peter hozzászólására (») Máj 19, 2014 /
 
Én mindenképp program hibára gyanakodnék. Ha publikus, akkor rakd fel ide a programot. Vagy legalábbis a gombkezelő részét!
(#) CHrissDock válasza vilmosd hozzászólására (») Máj 19, 2014 /
 
Dehogy szuper titkos csak telefonrol vagyok mert dolgozok egy sima szamodra egyszeru pic16f84-re irott ora.....csak nekem a pic programozas magas....
(#) CHrissDock válasza usane hozzászólására (») Máj 19, 2014 /
 
Bocsanat melle nyomtam a valaszt :/
(#) don_peter válasza mrobi hozzászólására (») Máj 19, 2014 /
 
Nem gond mutatom a kódot:
Csak a lényeget osztom meg, hogy ne legyen sok a kód..
  1. unsigned char get_key(void){
  2.         unsigned char i, k=0, result;
  3.         for(i=0; i<4; i++){
  4.                 SOROK = (0x08>>i);      //Léptetjük a sorok szintjét (A PORT 0:3)
  5.                 if(k!=0) k++;
  6.                 if(oszlop1){
  7.                                 return get_num_value(k);
  8.                 }
  9.                 k++;
  10.                 if(oszlop2){
  11.                                 return get_num_value(k);
  12.                 }
  13.                 k++;
  14.                 if(oszlop3){
  15.                                 return get_num_value(k);
  16.                 }
  17.                 k++;
  18.                 if(oszlop4){
  19.                                 return get_num_value(k);
  20.                 }
  21.         }
  22.         return '#';
  23. }
  24.  
  25. unsigned char get_num_value(unsigned char key){
  26.         unsigned char i = 50, x = 0, result;
  27.         if(oszlop1){
  28.                 while(oszlop1); //V·rakozunk a gomb felengedÈsÈig
  29.                 result = alfanum[key];        //Ez a változó tartalmazza a numerikus számokat 0-9-ig
  30.         }else if(oszlop2){     
  31.                 while(oszlop2); //V·rakozunk a gomb felengedÈsÈig
  32.                 result = alfanum[key];
  33.         }else if(oszlop3){
  34.                 while(oszlop3); //V·rakozunk a gomb felengedÈsÈig
  35.                 result = alfanum[key];
  36.         }else if(oszlop4){
  37.                 while(oszlop4); //V·rakozunk a gomb felengedÈsÈig
  38.                 result = alfanum[key];
  39.         }
  40.         return result;
  41. }

Ezek a függvények.
Természetesen a megfelelő regiszterek be vannak állítva mint az A PORT kimenetre, B PORT 0:3-ig kimenet, 4:7-ig bemenet.

A program pedig így hívja meg:
  1. void main(void){
  2.         while(1){
  3.                  keyval = get_key();    //numerikus gombok figyelése
  4.                 //A lentebbi csak példa a további felhasználásra
  5.                 if(keyval==1){
  6.                         //egyéb program rész
  7.                 }else if(keyval==2){
  8.                         //program rész 2 ...stb
  9.                 }
  10.         }
  11. }

Gyakorlatilag ez minden.
Random leakad valamiért.
A hozzászólás módosítva: Máj 19, 2014
(#) don_peter válasza don_peter hozzászólására (») Máj 19, 2014 /
 
Köszönöm az esetleges segítő szándékot, de közben megoldottam a dolgot. Thanks..
A hozzászólás módosítva: Máj 19, 2014
(#) usane válasza don_peter hozzászólására (») Máj 19, 2014 /
 
Épp akartam válaszolni, de akkor már mindegy.
Mi volt a gond, illetve a megoldás?
A hozzászólás módosítva: Máj 19, 2014
(#) Hp41C válasza don_peter hozzászólására (») Máj 19, 2014 /
 
Szia!
Megbocsáss... Segítséget kérsz, de nem adod meg, amit kérnek töled. A programot nem töltöd fel. A segítséget nyújtó nem látja át a programodat...
Azt ajánlom, amit a segíteni próbálók is tennének, ha meg lenne a teljes programod (legalább az a minimális része, ami a lefagyást produkálja).
Fogd a programot, készíts neki egy MpLab(X) project -et, állítsd be az MpLab SIM -et debuggernek. Tegyél töréspontot a kritikus részekre (megszakítás belépési pontja, stb). Indítsd el a programodat. Figyeld, meddig jut el. Ha sokáig nem jut el valamelyik pontra, állítsd meg, léptesd utasításonként, nézd meg merre bóklászik. Esetleg az egész programot léptesd utasításonként.
Ha kell állíts be stimulusokat, hogy a gombnyomásokat is szimuláld. Ha ez túl bonyolult, végy fel a néhány változót és azokat használd a portok helyett. Ezekben a változókban beállíthatod, melyik gomb legyen megnyomva...
(#) don_peter válasza usane hozzászólására (») Máj 19, 2014 /
 
ohhh azt hittem nem érdekel senkit a dolog.
A kódnak semmi baja nincs, késleltetést kellett csak bele csempésznem az egyes sorok vizsgálatához.
Bosszantó kis hiba, de ebből tanul az ember...
Most tesztelem és nem produkált eddig akadást...
(#) don_peter válasza Hp41C hozzászólására (») Máj 19, 2014 /
 
Olvass feljebb ott a kód ami sz***ott.
Mindent megadtam ami szükséges volt, de mivel közel 3000soros a teljes program nem akartam senki idejét vele rabolni és múltkor sem vezetett eredményre.
Bátorkodtam azt a program részt ide bemásolni amelyben a hiba van, hogy áttekinthető és lényegre vezető legyen.

Mindent amit említettél kipróbáltam, soronkénti debugot, töréspontokat és miegymást.
Semmi nem vezetett eredményre.

Egy kis időzítés megoldotta a gondot.
Borzasztó 2napon vagyok túl.
Köszönöm mindenkinek aki segített vagy akinek ez volt a szándéka..
A hozzászólás módosítva: Máj 19, 2014
(#) CHrissDock válasza CHrissDock hozzászólására (») Máj 19, 2014 /
 
erről lenne szó előre is köszönöm a segítséget......röviden annyi hogy dc56-EWA11 7 szegmenses kijelzőhöz kellene nekem ami közös katódos a program meg közös anódos....pic16f84-re...
(#) Pepebá válasza vilmosd hozzászólására (») Máj 19, 2014 /
 
Köszi a segítséget. Még nem igazán értem, de próbálkozom.
(#) vilmosd válasza CHrissDock hozzászólására (») Máj 20, 2014 /
 
Van valami kapcsrajz? Mert az jo lenne ha tudnank hova van kotve a kijelzo. Gondolom a RB-re, de az 8 bit szeles, a kijelzo pedig 7 bites. Es meg a mux jeleket is forditva kellene kiadni.
(#) kissi válasza vilmosd hozzászólására (») Máj 20, 2014 /
 
Én úgy látom a táblázat kezelése alapján, hogy a PORTB-re és csak a 0. bitet nem változtatja ( bár azt írja az 'a' szegmensnek! ) !
szerk. később bitállítással úgy látom azt is működteti!
A hozzászólás módosítva: Máj 20, 2014
(#) vilmosd válasza kissi hozzászólására (») Máj 20, 2014 /
 
Na ja, ge a RA is hasznalva van, es ott is meg kell forditani a mux jelekett. Persze ki lehet silabizalni a dolgokat a progibol, de az ido, ami deraga dolog.
(#) CHrissDock hozzászólása Máj 20, 2014 /
 
Bővebben: pic16f84 clock


Remelem sikerult megosztanom a linket rendesen
(#) Bell válasza CHrissDock hozzászólására (») Máj 20, 2014 /
 
Ha rákattintasz, kiderül.
(#) CHrissDock válasza Bell hozzászólására (») Máj 20, 2014 /
 
Nekem telefonrol nem nyitja meg azert irtam hogy remelem sikerult
(#) erik1193 hozzászólása Máj 20, 2014 /
 
Üdv!
Gondoltam kipróbálom a PIC-ezést,de még egy egyszerű led villogattós példaprogramot sem tudok lefordítani,mindig valami hibát ír. (MPLAB v8.92/ PICkit2 /PIC16F690) Próbáltam Assembly-ben és C-ben is,természetesen a megfelelő compilert használva.
Valaki tudna esetleg segíteni?

(lehet hogy tettek már fel hasonló kérdést,de 532 oldalt végigböngészni sajnos nincs időm)
(#) mrobi válasza erik1193 hozzászólására (») Máj 20, 2014 /
 
Szia!

Mikor ír hibát? A program lefordításakor vagy már a beégetésnél? Ha a fordításkor, akkor rakd fel a programot. Lehet hogy csak valami szintaktikai hibát követtél el. Ha a beégetéskor, akkor meg lehet, hogy a bekötés a rossz.

Szerk.: Figyelmetlen voltam. Tehát a programmal van gond. Rakd fel, ránézek.
A hozzászólás módosítva: Máj 20, 2014
(#) icserny válasza erik1193 hozzászólására (») Máj 20, 2014 /
 
Idézet:
„Valaki tudna esetleg segíteni?”
Erre csak akkor van esély, ha megírod (vagy idemásolod), hogy mi is volt az a "valami hiba", amit az MPLAB kiírt.
A hozzászólás módosítva: Máj 20, 2014
(#) erik1193 válasza mrobi hozzászólására (») Máj 20, 2014 /
 
Az itt található példaprogramot másoltam be, csak a header fájl nevét írtam át, persze be is társítottam azt a project mellé. A hiba pedig még a fordításnál jelentkezik :/

Bővebben: Link
A hozzászólás módosítva: Máj 20, 2014
Következő: »»   525 / 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