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   639 / 1210
(#) spgabor válasza don_peter hozzászólására (») Márc 4, 2015 /
 
De most azért nem volt törölve, mert csak tesztelném, hogy kapcsolgat-e másodpercenként. Időzítés eseten TMR2IE-t visszaállítom 0-ra.
(#) don_peter válasza spgabor hozzászólására (») Márc 4, 2015 / 1
 
Elkezdtél belekeveredni a dologba..
A TMR2IE regiszterrel tudod ki/be kapcsolni a timert.
A TMR2IF regiszter pedig jelzi, hogy éppen megszakításban van e vagy sem.

Tehát a TMR2IE regiszterbe írj egy 1-est vagy is elindítod timer2-őt.
Majd az utolsó isr-es módosításomat használd.
Ez végtelen fogja másodpercenként kapcsolgatni a relét ki és be..
(#) spgabor válasza don_peter hozzászólására (») Márc 4, 2015 /
 
Tényleg, köszi, így már az időzítés megfelelően fut, másodpercenként kapcsol oda-vissza a relé.
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 4, 2015 /
 
Idézet a 18F14K22 adatlapjából (DS41365E):
Idézet:
„Data EEPROM Memory
ED Byte Endurance 100K
Program Flash Memory
EP Cell Endurance 10k”

A 18F14K22 256 byte RAM memóriával rendelkezik. Mind a 256 byte elérhető a BSR regiszter felhasználásával (BANKED). A 0x00 .. 0x5F tartomány ezenkívül az ACCESS bankon keresztül is elérhető (ACCESS). Az ACCESS bank 0x60..0xff tarományában a speciális regiszterek érhetők el, de ezek a regiszterek BANKED módszerrel a 15. bankban is elérhetők. ld. Memory organization fejezet az adatlapban.
Indirekt eléréssel az egész 0. lap (0x00 .. 0xFF címen levő byte -ok) elérhető.
  1. clrf BSR, ACCESS
  2. movlw 0x70
  3. movwf FSR0L, ACCESS
  4. crlf FSR0H, ACCESS
  5. movwf INDF0, ACCESS
  6. movf 0x70, w, BANKED
A hozzászólás módosítva: Márc 4, 2015
(#) sonajkniz válasza Hp41C hozzászólására (») Márc 4, 2015 /
 
Jó annak, aki érti amit olvas. Sajna az én angol tudásom majdnem a 0 felé konvergál, ezáltal az adatlap szövegének jó ha a 20%-át felfogom.
Tehát nem vitatkozni akarok veled, csak a tudásod morzsáiból csipegetnék.
Tehát kérlek segíts. Megpróbáltam adatot bevinni a RAM-ba, majd onnan kiolvasni, de felettébb érdekes eredményeket kaptam. A 0x5F feletti tartománnyal egyáltalán nem boldogultam, az alattalévőből pedig nem onnan kerültek elő az adatok, mint ahova az FSR0 címzésével elvileg beraktam. Biztos, hogy én szúrok el valamit, de nem tudom, hogy mit.
Még kisérletezem egy darabig, de ha nem jutok dűlőre, feltöltöm amit eddig csináltam, és megkérlek, hogy nézd át.
(#) spgabor válasza don_peter hozzászólására (») Márc 4, 2015 /
 
Még egy kérdésem lenne. Tettem bele egy aktív változót, ami meggátolja, hogy visszaszámolás közben a véletlen gomblenyomás hatására átmatassam az időt. Valamint ennek a változónak az értékváltozásával a megszakításon kívülre tettem a buzzer csipogását. Viszont ez sajnos nem csipog így egyáltalán. Már direktben is kapja az 5V-ot a bc337-en keresztül, de sajnos semmi hangja. Az interupton belül még volt egy halk kis pittyenés, de amúgy semmi.
  1. void interrupt isr(void){
  2.     szamlalo++;
  3.     if(szamlalo == 1000){
  4.         szamlalo = 0;
  5.         if(masodperc == 0 && perc != 0){
  6.             perc--;
  7.             masodperc=59;
  8.         }else if(masodperc == 0 && perc == 0){
  9.             aktiv = 2;
  10.             TMR2IE = 0;
  11.         }else{
  12.             masodperc--;
  13.         }
  14.     }
  15.     TMR2IF = 0;
  16. }


  1. while(1){
  2.         display_drive(perc / 10, masodperc / 10, BalDigit);
  3.         __delay_ms(5);
  4.         display_drive(perc % 10, masodperc % 10, JobbDigit);
  5.         __delay_ms(5);
  6.         if(!PERC && (aktiv == 0)){
  7.             while(!PERC);
  8.             perc++;
  9.             if(perc > 99){
  10.                 perc = 0;
  11.             }
  12.         }
  13.         if(!MASODPERC && (aktiv == 0)){
  14.             while(!MASODPERC);
  15.             masodperc++;
  16.             if(masodperc > 60){
  17.                 masodperc = 0;
  18.             }
  19.         }
  20.         if(!TOROL && (aktiv == 0)){
  21.             while(!TOROL);
  22.             perc = 0;
  23.             masodperc = 0;
  24.         }
  25.         if(!START){
  26.             while(!START);
  27.             if((perc + masodperc) > 0){
  28.                 aktiv = 1;
  29.                 RELE =  1;
  30.                 TMR2IE = 1;
  31.             }
  32.         }
  33.         if(!STOP){
  34.             while(!STOP);
  35.             RELE =  0;
  36.             TMR2IE = 0;
  37.             aktiv = 0;
  38.         }
  39.         if(aktiv == 2){
  40.             aktiv = 0;
  41.             RELE = 0;
  42.             for(int i = 0; i++; i < 10){
  43.                 BEEP = 1;
  44.                 __delay_ms(10);
  45.                 BEEP = 0;
  46.                 __delay_ms(10);
  47.             }
  48.         }
  49.        
  50.     }
  51. }


Pedig kellene tízszer csippannia. Nem értem, hogy miért csinálja, mert amikor a pic-et arra utasítottam, hogy folyamatosan kapcsolja be a meghajtó tranzisztort, akkor is csak egyet csippanik, nem sípol folyamatosan. Hogy tudnám szóra bírni?
A hozzászólás módosítva: Márc 4, 2015
(#) don_peter válasza spgabor hozzászólására (») Márc 4, 2015 /
 
Kicsit több idő kell neki.. Csippan az, de olyan gyorsan, hogy nem is hallod
Próbáld 50-100-150-200ms-on.
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 4, 2015 /
 
Milyen programmal próbáltad? Állítsd be az MpLab -ban a MpSim -et debuggernek, fordítsd le újra a programot. Ezek után lépésenként (is) végrehajthatod és közben nézheted mi történik a regiszterekkel és a memóriákkal.
A hozzászólás módosítva: Márc 4, 2015
(#) elektro777 válasza nedudgi hozzászólására (») Márc 4, 2015 /
 
Nem, sajnos még nem rég foglalkozok pic-el, programozgattam MP LAB-ban assemblyben, és nemrég kezdtem el c-vel foglalkozni, főbb rutinokat, ciklusokat megismerni. Rendelkezésemre áll microC fejlesztőkörnyezet. Eddigi programjaim futófények, és hasonló egyszerűbb programok voltak. Még ilyet nem igazán csináltam. Tehát a routerben található adatokat (mint IP, Subnet mask stb) be kellene vinnem az EEPROMBA és, így ismerné fel az eszközt? De milyen módon vigyem be? Találtam EEPROM író/olvasó utasításokat a microC library-ben, de azokat a program írás közben használhatom fel, viszont nekem ugye csak egy gépi-kódú hex File-om van, ezt vissza kellene fordítanom? vagy van külön funkció a fejlesztőkörnyezetben amivel az EEPROM tartalmat tudom módosítani? Megköszönném a segítséget ha letudnád írni ennek a menetét. Illetve majd az Android programban az MCU URL-t azt hol fogom megtalálni végül?
Köszönöm előre is!
(#) nedudgi válasza elektro777 hozzászólására (») Márc 4, 2015 /
 
Nem, ezeket az értékeket a programozóban kell bevinni, kézzel. Mivel programozod a PICet?
(#) elektro777 válasza nedudgi hozzászólására (») Márc 4, 2015 /
 
Easypic programozó panel áll rendelkezésemre, ezzel programozok microC-ben, illetve még van PICkit3 programozóm is.
(#) sonajkniz válasza Hp41C hozzászólására (») Márc 4, 2015 /
 
Ó én marha! Matemetikai feladatokhoz számtalanszor használtam már a szimulátort, de most ez eszembe sem jutott. Köszi!
(#) kameleon2 válasza Hp41C hozzászólására (») Márc 4, 2015 /
 
Szia! Köszönöm. Hardveresen mi kell a program letöltéséhez? Mi a mikrokontroller minimum hardvere?
(#) Hp41C válasza kameleon2 hozzászólására (») Márc 4, 2015 / 1
 
A progra betöltéséhez egy PIC16F -eket kezelő programozó készülék - 5 vezeték. Talán az univerziális EProm programozód is ismeri ezeket a típusokat.
A kontroller, 1 db 10k felhúzó ellenállás a MCLR és a Vdd közé, 1 db 100 nF kerámia a Vdd és a Vss közé valamint a ki- és bemenetek áramkörei. Belső órajel használatakor más nem is kell.
(#) kameleon2 válasza Hp41C hozzászólására (») Márc 4, 2015 /
 
Lehet, hogy mégis nekiveselkedek. Bár nagy a csábítás a nem PIC-es megoldás felé. Ahhoz ugyanis mindössze egy db 6megás szoftver kell. Csak a mikrokontroller drágább.
(#) nedudgi válasza elektro777 hozzászólására (») Márc 4, 2015 / 1
 
"C:\Program Files\Microchip\PICkit 3\PICkit 3.exe"
Ez a program kezeli a PICkit3 programozót. Gondolom, a mikrokontrollerben már benne van a .hex fájl, már csak az EEPROM területet kell kitölteni a leírás második oldalának alján megadott értékekkel.
(#) Hp41C válasza nedudgi hozzászólására (») Márc 5, 2015 /
 
Ma már csak az MpLabX csomagban levő IPE (Integrated Programing Environment) alkalmazás az egyedüli, amivel a programoz kezelhető. A PICkit3 kezelő programja elavult - tulajdonképen egy PICkit2 -t csinált belőle.
(#) sonajkniz válasza Hp41C hozzászólására (») Márc 5, 2015 /
 
Ne szídd a PICkit2-t.
Két barátommal együtt tanuljuk a programozást. Nekem PICkit2-m van, nekik PICkit3.
Nekem még sosem volt vele bajom, ők állandóan szívnak vele. A 3-asokon már a megvásárlás percében két szoftverfrissítést kellett végezni ahhoz, hogy egyáltalán működjenek. Ha valamiért ledobja az MPLAB X IDE őket, csak az IPE-vel lehet újracsatlakoztatni. Az egyedüli hátránya a 2-esnek, hogy nem minden PIC-et ismer. Amúgy meg sokkal jobb.
(#) nedudgi válasza Hp41C hozzászólására (») Márc 5, 2015 /
 
Én nem használom ez a trendi MPLab X szoftvert. Igaz, a legújabb kontrollerek kimaradnak így, de legalább átlátom a projekteket...
Ha újabb kontrollert terveznék, akkor a PICkit 2-t használnám. Valahol csak találni megoldást rá.
A hozzászólás módosítva: Márc 5, 2015
(#) nedudgi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Jónak mondod!
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Csak halkan mondom, hogy a PICkit2 sokkal többet ismerhet (programozhat), mint a PICkit3, csak egy kis munka kell(ett) hozzá. A teljes Microchip kínálatot (PIC16C5x -től a PIC32MZ -ig) tudja már két család kivételével: PIC14, PIC17.
A hozzászólás módosítva: Márc 5, 2015
(#) sonajkniz válasza Hp41C hozzászólására (») Márc 5, 2015 /
 
Na de mi van akkor, ha az MPLAB X-ben kijelölök egy PIC-et, pl:12F1840 és kapásból azt jelzi, hogy a PIKkit2 nem jó hozzá?
(#) kissi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Az csak azt jelenti, hogy az MPLAB alól nem tudod vele programozni ( másképp még lehet, hála HP41C kolléga munkásságának ! ) !

szerk: Nézz rá erre a topic-ra is ! Bővebben: Link
A hozzászólás módosítva: Márc 5, 2015
(#) nedudgi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
A PICkit2 önálló programja képes úgy is működni, hogy figyeli a betöltendő fájlt (xxxx.hex), és ha megváltozott, az új tartalmat betölti a PIC-be. AZ MPLab-ban ilyenkor nem kell programozót beállítani...
A hozzászólás módosítva: Márc 5, 2015
(#) sonajkniz válasza nedudgi hozzászólására (») Márc 5, 2015 /
 
Egyszer a neten találtam valahol egy olyan kapcsolást, hogy valamijen 8 lábú microcontroller belső hőméréjét haszálták arra, hogy egy hűtőbordára ragasztva a microcontrollert, az PWM-el szabályzott egy hűtőventilátort. Nem tudja valaki hogy a PIC-ekben van-e belső hőmérő, és ha igen, hogyan lehet lekérdezni?
(#) nedudgi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Néhány típusban létezik, de inkább indikátornak lehet nevezni. Például a PIC12F1822/1840. Ha pontosabb szabályzás kell, akkor az MCP9700A/9701A hőmérő nem dob sokat a projekt költségén.
(#) kissi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Eszerint nem lehet rá keresni ... --> nincs !?
Bővebben: Link
(#) sonajkniz válasza kissi hozzászólására (») Márc 5, 2015 /
 
Szép ez a keresőfelület, csak azt nem tudom, hogy tudok vele rákeresni a belső hőmérőre, valamint, ha az már megvan, hogyan lehet lekérdezni.
(#) kissi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Ha megnézed, akkor láthatóak a perifériák, csak a meglévő lehetőségek közül lehet választani ( mivel online, ezért szerintem aktuális! ),...szerintem, ha lenne belső hőmérős, akkor hirdetnék... ! Ránéztem nedudgi kolléga által javasolt PIC12F1822 adatlapjára, nem látom benne a hőmérőt...!
szerk.: utólag megtaláltam benne egy lehetőséget !
Ha megvan a választás, akkor az adatlapban azt is leírják, hogy "milyen nyelven ért" !
A hozzászólás módosítva: Márc 5, 2015
(#) nedudgi válasza sonajkniz hozzászólására (») Márc 5, 2015 /
 
Nem csodálom, hogy nem boldogulsz vele, pedig nagyon csicsás...
Valamivel jobb itt keresgélni, de ebben is vannak hibák. Ha kiválasztottunk valamit, akkor az adatlapot még át kell bogarászni, hogy tényleg megfelelő arra, amire szántuk.
Következő: »»   639 / 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