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   142 / 1210
(#) trudnai válasza watt hozzászólására (») Okt 11, 2011 /
 
Valoszinuleg lehet tanulni, de azert en inkabb ugy latom, hogy ok inkabb csak teszt kodnak illetve bizonyiteknak szanjak ezeket a kodokat, hogy lam meg lehet csinalni a chippel amit allitanak rola. Mas kerdes, hogy sokan (nagyon sokan) fel is hasznaljak a kodot hiszen jo sok fejlesztesi idot megsporolhatnak vele.

Amugy sok App Note-ot kulso szakertok csinalnak, Microchip partnerek stb, akik ily modon jutnak hirnevhez meg esetleg jutnak magasabb fokra a szakertoi szinteken. De meg igy is ezek a Note-ok vagy jok vagy nem...
(#) Pepebá válasza watt hozzászólására (») Okt 11, 2011 /
 
Hali!
Egyenlőre kapkodom a fejem és mint kezdő próbálom értelmezni válaszotokat.
Az USB kezelését megszakításra állítottam, de a következőket nem tudom hogy csináljam:
"Ha mellé akarsz tenni egy timer
megszakítást azt megteheted, csak le kell kezelned a megszakítás jelző bitjét
és engedélyezned kell a megszakítását."
Üdv.
(#) Pepebá válasza icserny hozzászólására (») Okt 11, 2011 /
 
Hali!
A kérdezőnek igazán az okoz problámát, hogy több megszakítást hogyan kell lekezelni.
A timer2 jelzőbitjét figyelem egy ciklusba, annak változását számoltatom.
Ebben a ciklusban történik az analóg és az I2C bemenetek beolvasása és az adatok küldése a PC-fele.
A beolvasások miatt késleltetés kell,utána jön az USB adat küldés, az időzítő meg nem igazán jól működik.
Biztos mint kezdő rossz a gondolatmenetem és a megvalósításom.
Üdv.
(#) icserny válasza Pepebá hozzászólására (») Okt 11, 2011 /
 
Például a magas prioritású megszakítást kiszolgáló eljárásba (a PICCOLO projektben ez a hi_isr) ezt írom:
  1. #pragma interrupt hi_isr
  2. void hi_isr() {
  3.   if (PIR1bits.TMR2IF) {    //Ha Timer2 volt
  4.     ... Timer2 megszakítás kiszolgálása
  5.     PIR1bits.TMR2IF=0;    //jelzőbit törlése
  6.   }
  7.   if (PIR1bits.TMR1IF) {    //Ha Timer1 volt
  8.     ... Timer1 megszakítás kiszolgálása
  9.     PIR1bits.TMR1IF=0;    //jelzőbit törlése
  10.   }
  11.   USBDeviceTasks();    //ez se maradjon ki!
  12. }
(#) watt válasza Pepebá hozzászólására (») Okt 11, 2011 /
 
A Timereknek vannak megszakítást engedélyező bitjei. Ezeket a PIEx regiszterekben találod(adatlap!) Ha ezeket 1-be teszed, akkor engedélyzted, hogy a Timer_x túlcsorduláskor megszakítást okozzon. Ezt a PIR1 TMRxIF bitje jelzi, amit icserny mester a példájában be is mutatott, azaz ezt vizsgálva tudod meg, hogy mi okozta a megszakítást. Nézd meg az adatlap Interrupt részét, ott fel van sorolva az összes regiszter, ami szóba jöhet. Ha emésztettél, jöhet a következő kérdés! pl. Mi az a prioritásos megszakítás?...
(#) doup hozzászólása Okt 11, 2011 /
 
Sziasztok! Az én kérdésem az lenne hogy PWM segítségével villogtatok egy ledet 16f818-al. Viszont a led elég halványan villog 100% on és megmértem a csúcs feszültséget és mindössze 0.8 V miért van ez?
(#) icserny válasza watt hozzászólására (») Okt 11, 2011 /
 
Hozzátenném, hogy mindezek a PICCOLO projektben is összegyűjtve, kiszínezve, részletesen le vannak írva, a Számlálók/időzítők.html]Programmegszakítások[/url] és a c. fejezetekben.
(#) watt válasza icserny hozzászólására (») Okt 11, 2011 /
 
Igen, nagyon komoly munka gratulálok, sokaknak segítettél már az biztos. Csak el kell olvasni és máris egy szinttel feljebb lehet lépni!
(#) Pepebá válasza icserny hozzászólására (») Okt 11, 2011 /
 
Hali!
Köszönet és nagyra értékelem szándékotokat amivel sötét elmémet próbáljátok felhomályosítani. Azt hiszem nem voltam egyértelmű és elértettétek a problémámat.
Megpróbálom másik oldalról megközelíteni.
A Piccolo project szerint végigrágtam magam, megcsináltam és működnek a programok,hardverek.
2xI2C, RA0 beolvasás, mindkettő USB kapcsolattal USB_USB és INTERRUPT engedélyezéssel. A magas priolitású megszakítást kiszolgáló eljárást úgy használva ahogy leírod.
A timers példák alapján a timer2 regiszter jelzőbit figyeléssel időzítőt. Interrupt engedélyezéssel és ugyan úgy magas priolitás kiszolgálással.
Ezek külön megfelelően működnek.Gondom akkor van amikor ezeket eggyütt próbálom használni és a magas prioritású kiszolgálásban a Timer2 és USB is szerepel.
Az RA0 és az I2C beolvasás, adatküldés USB-n működik, viszont az időzítő nem megfelelően.
Lehet hogy a végtelen ciklusom műveletei és az I2C beolvasás miatti késleltetése (azt kissebbre vettem) okozza a problémát. (próbálkozom)
Üdv.
(#) icserny válasza Pepebá hozzászólására (») Okt 11, 2011 /
 
Idézet:
„A timers példák alapján a timer2 regiszter jelzőbit figyeléssel időzítőt.”

Idézet:
„Az RA0 és az I2C beolvasás, adatküldés USB-n működik, viszont az időzítő nem megfelelően.”
Én ezeket nem értem. Mi a konkrét probléma? Esetleg egy lecsupaszított példa-projektet, ami demonstrálja a hibát be tudnál csatolni?
(#) Pepebá válasza icserny hozzászólására (») Okt 12, 2011 /
 
Hali
Befogom csatolni majd a példa projectet, de egyenlőre próbálom megfejteni a probléma okát.
Előtte még van egy kérdésem:
Az USB kapcsolatot támogató becsatolt állományok hogyan és hol befolyásolják a RD0,RD1,RD2,RD3 és RD4 működését, miután ezeket billegtetem különböző időzítések elteltével és ezek nem működnek megfelelően.
pl. az RD3-t be sem tudom kapcsoltatni.
Azt láttom hogy a config file-ben hogyan vannak konfigurálva D port bitjei (D0-D3) LEDport-nak (a D4-t én állítom be a programban) és az USB állományok nélkül jól is működnek.
Üdv
(#) icserny válasza Pepebá hozzászólására (») Okt 12, 2011 /
 
Idézet:
„Az USB kapcsolatot támogató becsatolt állományok hogyan és hol befolyásolják a RD0,RD1,RD2,RD3 és RD4 működését?”
Ehhez is látni kellene, hogy mit és hová csatolsz be. Feltételezve, hogy a PICCOLO projekt támogatói könyvtárat használod, az alábbiakat tudom mondani:
A piccolo_usb.c-ben az InitializeSystem() függvényben van egy sor, ami hivatkozik az mInitAllLEDs() makróra, ami a következő utasításokat szúrja be:
  1. LATD &= 0xF0;
  2. TRISD &= 0xF0;


Ezen kívül a piccolo_usb.c-ben a ProcessIO() függvény rendszeresen meghívja a BlinkUSBStatus() függvényt, ha a villogatás engedélyezve van.
(#) Pepebá válasza icserny hozzászólására (») Okt 12, 2011 /
 
Hali!
Köszi a segítséget. Csak a Piccolo project támogatói könyvtárat használom.
A probléma az volt, hogy a config file-be valamikor belejavítottam és a LATD-t és TRISD-t átírtam 0xF8-ra (nem tudom miért, biztos még az elején mikor kezdtem a próbálkozásaimat)
Miután becsatoltam a piccolo_usb.c-t, a program hiába írt a D-portra az InitializeSystem() függvény a mInitAllLED() makróval átírta.
Valójában a program időzítő része jól működött, bekapcsolta a D1-4 biteket de azonnal kikapcsolásra került.
Mint említettem néztem is a config file-t (mert gyanítottam hogy valami USB alkalmazás átírja), de elkerülte figyelmem a hiba.
Üdv.
(#) BárányD hozzászólása Okt 12, 2011 /
 
Szépjónapot! Tanácsot szeretnék kérni. Kezdő elektrós vagyok. Raktam már össze sok sima kapcsolást. Ez a PIC es dolog most beindított, szeretnék vele hobbi szinten foglalkozni. Én nem szeretnék programokat írni ( eleinte ). Milyen készletet tudnátok nekem ajánlani? Lehetőleg pénztárca kímélőt Köszönömávid
(#) potyo válasza BárányD hozzászólására (») Okt 12, 2011 /
 
Lehet utánépíteni kapcsolást, sokan ezt csinálják, de akkor az tanulás szempontjából semmit sem ér. A PIC (és bármely más kontroller) lényege, hogy programozható.
(#) trudnai válasza BárányD hozzászólására (») Okt 12, 2011 /
 
PicKit2 programozo (klon vagy akar eredeti) es ha gyakorlott pakas vagy akkor erdemes olyan kapcsolasokat keresni akar itt a HE-n is ami PIC-re epul es egyszeru dolgokat csinal (akar LED villogtatos dolgokkal is erdemes kezdeni hogy megszokd a PIC programozas fortelyait)
(#) vilmosd válasza BárányD hozzászólására (») Okt 12, 2011 /
 
Szoval ha visszaolvasol a PIC-es temaju temakban igen sok segito javaslatot talalsz. Addig is nezz szet a konyvespolcon. Kezdoknek valo irodalom, demo panelek, mintapeldak talalhatok rajta. Fo csapasirany a PIC, de vannak mas jellegu irodalmak is.
(#) vizor válasza vilmosd hozzászólására (») Okt 12, 2011 / 1
 
Ezt a könyvespolc linket érdemes lenne kitenni a topic címe alá mint kiemelt tippet, a "Ne építs JDM-et" sorral együtt...
(#) Hp41C válasza vizor hozzászólására (») Okt 13, 2011 /
 
Ehhez hasonlót már régebben kezdeményeztem... Az AVR -es topik elején van néhány kiemelt ötlet.
(#) vizor válasza Hp41C hozzászólására (») Okt 13, 2011 /
 
Igen, onnan van az ötlet, itt is lehetne. Hiszen van már a "Kezdő kérdések" előtt is.
(#) Pepebá hozzászólása Okt 13, 2011 /
 
Hali!
Már értetlenkedtem több alkalommal, a Piccolo project kapcsán az USB kapcsolatról és megértettem hogy a CDC mód (virtuális soros port) nem viseli el a kapcsolat ki-bekapcsolását és ha arre van igény, akkor HID módú eszközt kell alkalmazni.
Most azt tapasztaltam hogy a kapcsolat megszakítása esetén a PIC program megáll és kapcsolat újra létesítésénél folytatódik. Az igaz hogy a PC oldal nem építi fel újra a kapcsolatot, csak PIC reset esetén.
Kérdésem: nincs lehetőség ilyen esetben arra hogy a program ne álljon le. (mint valódi soros port esetén, ahol le lehet zárni a kapcsolatot)
Olyan feladatot kellene megoldanom hogy ilyen esetben a mikrovezérlő programja tovább fusson.
Üdv.
(#) _Peti_ hozzászólása Okt 13, 2011 /
 
Sziasztok!

Utánépítek egy PIC16F628A-s eszközt, ami 16MHz-es kerámia rezonátorral lett tervezve. Ezt helyettesíthetem 16megás kvarccal is? (csak a hex fájl van meg hozzá)
(#) vicsys válasza _Peti_ hozzászólására (») Okt 13, 2011 /
 
Igen, de a 2db. 22pF-os kondit ne feledd!
(#) Poostmaster hozzászólása Okt 13, 2011 /
 
Sziasztok.
Olyan segítséget szeretnék kérni, hogy valaki legyen szíves leírni nekem, milyen lépéseket kell elvégeznem, ha egy órát akarok programozni. A programot saját magam szeretném megírni, de egyelőre sejtésem sincs, hogy hol kezdjem. Nézegettem a 628-assal készült órákat is, de eddig a 887-essel foglalkoztam, és nem tudnék még átváltani. A cél az volna, hogy egy 887-est programozok fel óra gyanánt. A kijelzés nem lényeges, csak odáig, hogy a portokra kijusson a megfelelő jel, ami az órákat, perceket, stb. jelenti. Egyelőre addig jutottam, hogy az egyik timert kellene beállítanom, hogy számoljon, és adott pillanatban indítsa a megszakítás kezelő rutint.
Keresgéltem itt a fórumon, és átnéztem az adatlapot is, de a netes fordítók elég furán adják. Milyen órajelet kellene beállítanom? Meg tudom oldani belső oszcillátorral, vagy kell külső?
Tehát az lenne a fő kérdés, hogy milyen folyamatot kövessen a program?
(#) vicsys válasza Poostmaster hozzászólására (») Okt 13, 2011 /
 
Valami jófajta RTC-ben nem gondolkodtál? Nem kellene a pontossággal bíbelődni és pluszban dátumot is kapnál...
(#) Poostmaster válasza vicsys hozzászólására (») Okt 13, 2011 /
 
Nem az óra maga a lényeg. A pontosság sem igazán számít, és abból szeretném megcsinálni, amim van.
(#) vicsys válasza Poostmaster hozzászólására (») Okt 13, 2011 /
 
Ha belső oszcit használsz, rettentő pontatlan lesz. (Főleg, alacsony órajelnél ~4MHz) Egy 16...20MHz-es külső kaviccsal már igazán jó eredményeket lehet elérni.
Milyen nyelven programozol?
(#) _Peti_ válasza vicsys hozzászólására (») Okt 13, 2011 /
 
És a konfig biteket át kell állítani?
(#) vicsys válasza _Peti_ hozzászólására (») Okt 13, 2011 /
 
Nem, nem kell.
(#) Hp41C válasza Poostmaster hozzászólására (») Okt 13, 2011 /
 
Szia!

A pic fogyasztása kérdéses?
- Ha igen: A timer1 jár csak sleep állapotban. A T1 oszcillátorára egy megfelelő quartz -ot (32kHz, 32.768kHz, 40kHz) kell kötni, a timer 1 regiszterbe a megfelelő induló értéket betöltve megszakítás (sleep állapotból való felébresztés) képezhető a 0-ra való átfordulásakor. A feladat elvégzése után alvás (sleep)...
- Ha nem (mert más dolga is van): A kontroller órajelét a timer2 -vel lehet egyszerűen leosztani (pl 1000 -rel). A timer2 megszakításoakt számolni (egyéb feladatokat elvégezni). A kellő számú megszakítás után az időt (is) léptetni.

A propeller és a wand óra topikjába töltöttem fel timer2 -vel működő forrásokat...

Ha csak a timer0 van (csak 2 hatványával lehet osztani) és az órajel frekvencia nem 2 valamelyik hatványa: Roman Black honlapja
Következő: »»   142 / 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