Fórum témák
» Több friss téma |
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...
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.
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.
Például a magas prioritású megszakítást kiszolgáló eljárásba (a PICCOLO projektben ez a hi_isr) ezt írom:
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?...
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?
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.
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!
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. Idézet: „A timers példák alapján a timer2 regiszter jelzőbit figyeléssel időzítőt.” Idézet: É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? „Az RA0 és az I2C beolvasás, adatküldés USB-n működik, viszont az időzítő nem megfelelően.”
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 Idézet: 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:„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?” 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:
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.
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.
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
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ó.
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)
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.
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...
Ehhez hasonlót már régebben kezdeményeztem... Az AVR -es topik elején van néhány kiemelt ötlet.
Igen, onnan van az ötlet, itt is lehetne. Hiszen van már a "Kezdő kérdések" előtt is.
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.
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á)
Igen, de a 2db. 22pF-os kondit ne feledd!
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?
Valami jófajta RTC-ben nem gondolkodtál? Nem kellene a pontossággal bíbelődni és pluszban dátumot is kapnál...
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.
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?
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 |
Bejelentkezés
Hirdetés |