Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: Az ADC-nél sokkal cifrább ügy, hogy telenyomták PWM csatornákkal, de véletlenül négynek összekötötték belül az órajelét.„Eléggé elszomorító hogy pl az ember vált egy nagyobb picre, és olyannal szembesül fejlesztés közben hogy ennek meg az ADC -je defektes.” Tanulság: nem érdemes túl friss mikrovezérlőkre alapozni, mert: - Az adatlap hibás lehet (egy régebbiből másolták, s lehet, hogy pl. olyan regiszterről írnak, ami az új vezérlőben nincs is!) - A szilícium chip is hibás,nem úgy működik, mint ahogy tervezték. - A fordító "ismert hibáinak" jegyzéke is aggasztóan hosszú lista (lehet, hogy hibás kódot generál). - Mire összejön a program, kiderül, hogy az új mikrovezérlőt nem támogatják a bevált fejlesztő eszközök (nem lehet szimulálni, programozni, debug-olni). - Ha támogatják, akkor még mindig megeshet, hogy hibás az eszközleíró állomány, vagy a könyvtári modul. S akkor még a felhasználó által elkövethető hibákról nem is szóltunk...
Amúgy ha csak az órajel van összekötve az nem olyan nagy baj, ha lehet a kitöltést külön állítani. Nekem most csak a sok RAM, és a 887 -hez hasonlóan portb -n is levő AD csatornák miatt esett erre a választásom. Úgy tűnik nekem, hogy a régebbi kontrollerekben nem volt ennyi hiba. Hibába, azokba még vót' anyag Fene tudja, biztos kapkodnak, meg az is benne van, hogy pénzügyi okokból eladják még a selejtet is, ahelyett hogy kijavítva a hibát, új sorozatot gyártanának.
Hát, valóban lehet, hogy a MC háza táján is érezteti a hatását a válság. Tegnap voltam a Chipcad-ben, mert venni kellett pár 18F2550-et PK2 klónokba. Teljesen ledöbbentem, mikor az eladó közölte, hogy nincs F-es csak LF-es, és az F-est ugyan már két hete megrendelték, de a gyártó novemberre (!) igazolta vissza a szállítást. Pedig a 2550 egy igencsak pörgő típus, és ezzel is ilyen akadozó az ellátás.
Igazából valamikor kora tavasszal is sejthető volt már, hogy számíthatunk ilyesmire, akkor a 16F946-ra kérdeztem rá, ami ugyan egy viszonylag ritkán használt PIC, de korábban volt, hogy rendeltem belőle. A korábbi szokásos 4-6 hetes szállítási határidő helyett már akkor is 3-4 hónapot mondtak, ezt még egy lassan forgó típusnál is elképesztőnek tartom.
Most kísérletezek először PIC-kekkel, azért először assemblyben akarok megírni egykét dolgot, hogy fölfogjam hogyan is megy. Kerestem a fórumban, de nem találtam olyan hozzászólást ami nekem egyértelműen segített volna, vagy megoldotta volna a problémán.
PIC 12f629 GPIO 5-re akarok egy megszakítást küldeni, ami felépreszti sleepből a picet, hogy fusson tovább a program. Nem akarok szubrutint. Felhúzó ellenállás van rajta és egy földelő kapcsoló.
Mivel épp most nem tudom beégetni a programot, csak oshon szimulátorral kisérletezek, ami nem ébred fel. A kérdés hogy a kód a rossz, vagy a szimulátor. Előre is köszi
A GPIO beolvasását a GPIF törlése előtt csináld, tehát tedd át a BCF INTCON, GPIF sort a MOVF GPIO, 0 alá. Valamint a 0 helyett W-t írj ezekhez az utasításokhoz, mert úgy jobban követhető a kód, hogy mit csinál.
Egyébként én jónak nézem, a kódodat. Mi következik a SLEEP után? Csatold az egész programot. Illetve nézd meg az MPSIM szimulátorban is, lehetséges, hogy az Oshon szimulátora hibás.
Nem tudom, mit akar a GPIO-val ( illetve gondolom a változás érzékeléséhez kell! ), de nem váltotta vissza a BANK-ot, így azt nem éri el!
Steve
A bank0 jogos. GPIO a változás értékeléséhez akartam használni, biztos ami biztos alapon.
Itt az egész program, csatolva, nem akartam a fél fórumot elfoglalni vele. Ez egy elektronikus dobókocka, olyan mint, ami a kapcsolásoknál van. Meg akarom ismerni a pic-eket, ezért írom magam a programját. Ha megy az interrupt, majd belecsempészek timer-t meg wdt-t. Ha javaslatototok van akár a programozással kapcsolatban, akár egyéb dolgokkal várom szívesen. Kipróbáltam MPSIM el is, ami meg átugorja a sleepet, holott GPIF 0. Akármit csinálok. Biztos velem van a baj, mert nem nagyon értek ehhez még. gpio 0,1,2,4 kimenetek, a felvillanó szám függvényében. gpio 5 meg egy nyomógomb. Most így a specifikációt olvasva aszsem értelmesebb lenne a gombot a gp2-re raknom. Jah meg egy kis kérdés, szoftveresen nem lehet kikapcsolni a wdt-t, ugye? Van amikor rossz, hogy megy, de van amikor meg resetelni akarok. Van valami módja akkor annak, hogy reseteljek szofveresen?(gondoltam az mclr-t rákötni egy kimenetre,de nincs elég lábam) Köszi a segítséget
A WDT optimálisan futó program esetén sosem okoz resetet. Arra használják, ha bármilyen oknál fogva valahogyan "beragad" a program futása és onnan csak a reset tudja kihozni. Fejlesztés alatt általában nem szoktuk engedélyezni, mert zavaró lehet és a hibák felderítését nehezíti meg. A végleges firmwareben szokás engedélyezni, miután a szoftver már jónak tűnik.
Szoftveresen is lehet resetelni, programból elugrasz a reset vektor címére (előtte IT tiltása). Ekkor viszont minden felhasznált regisztert alaphelyzetbe kell állítani, hogy valóban reset emulálásról legyen szó.
Mikor okoz problémát? Szimulációnál vagy a végleges működésnél? Úgy gondolom, hogy a szimuláció során --> Configure --> Configure Bits -eknél tiltsd le a WatchDog-ot ( ez a végleges programozásnál is letiltja! ), akkor nem fog ilyen üzenettel leállni!
Steve
Nem nézegettem sokáig, de szerintem működik: a SLEEP utáni első NOP-nál megáll és a GPIO5 változása felébreszti!
Nézd meg a konfigurációs bitjeimet is! Steve
Sziasztok!
Az OPTION_REG a Bank1-ben van, a 32. és a 33. sort fel kellene cserélni - az írás így a TMR0-ba megy...
Amikor még írtam sokszor ellenőriztem a bankokat, de úgynézni időközben annyiszor nyúltam bele, hogy elrontottam.
Sikerült beszereznem egy működő égetőt is(enyém furcsa hibákat generál olykor), és beégettem a programot a picbe, a hibák javítása után már úgynézki működik is. Az időzítésekkel szórakozok még egy kicsit. Úgylátszik az oshon szimulátor nem jó, a mpsimet meg még nem tudom jól használni. Még egy kérdésem lenne(egyenlőre) Természetesen én is mikor kézhez kaptam először a picemet, hogy kipróbáljam jó-e, teleírtam, majd töröltem, és hát elveszett a belső oscillátor kallibrációs bitjei. A kérdés, hogy ez mit jelent. A 4mhz nem egészen 4 mhz, vagy maga az órajel sem egyenletes. Bizonyára kérdezek olyanokat is, amit leírtak már a fórumba. De csak most kezdtem el foglalkozni a témával, és még folyamatban van a fórum és egyéb szakirodalom párhuzamos olvasása. Köszi a segítséget.
Szia!
A frekvencia nem pontos, de egyenletes az órajel. A PicKit2 -ben van lehetőség az OSCCAL újragenerálására. Ha most Nálad van egy használható programozó, érdemes lenne egy 18F2550 -et felprogramozni a PicKit2 firmware -jével... Aztán építeni egy klónt. (SMD verzió esetén fordítva).
Üdv!
A PICeknél az egyfajta tokozású típusoknál mindég ugyan az a láb a tápfesz?
Szia!
Általában - családon belül - iden, de mindig érdemes megnézni az adatlapot... Az újabbaknál van eltésés: pl 24Fxxx I/SP (28 lábú keskeny dip tok) tápbekötése eltér a többitől... Egyes típusoknál (újabb fejlesztés - 1.8 .. 3.3 V belső táp) Vcap lábra kondenzátort kell kötni, de a Vcap funkciót több láb közül lehet kiválasztani a konfigurációs regiszterek egyikében.
Sziasztok!
Napok óta szívok egy 4x16-os LCD panellel... Nem bírok semmit kicsikarni belőle. Displaytech 164A KS0070b meghajtóval. Már mindenképp próbáltam az inicializálást megírni, de semmi eredmény. A lábakat ellenőriztem, tehát az RW, RS, E lábak jó helyre vannak kötve, ill a DB0-DB7 is. Mindegyik szintje tökéletesen állítódik programból. 8 bitsesen kezelem. Már a ks0070b adatlap alapján írtam meg az inicializálást aminek a végén kéne egy villogó kurzort kapnom, de semmi. Mi lehet a gond?
Üdv! Szerintem csak az enable láb van rosszul kezelve, ugyanis normál állapotban ez logikai alacsony szinten van, és íráskor/olvasáskor kell logikai magas szintre rakni.
Egyszerűen cseréld ki a bsf EN utasítást bcf EN utasíásra, és viszont. Akkor jónak kell lenni Az írás menete úgy van, hogy kimegy az adat, az RS-t be kell állítani, az RW = 0, majd ezek után kis időt kell várni, (elég pár mikroszekundum) és utána az EN = 1, megint várakozni kicsit, utána EN = 0, aztán annyit kell várni, míg az utasítást elvégzi a modul (adatlapban le szokták írni, melyik parancs menny időt igényel)
Az időzítést az adatlap alapján csináltam.
Ellenben ha lenne valakinek egy működő inicializáló rutin akkor azt kipróbálnám. Már arra is gondoltam, hogy szar a display.
Szia!
- Előbb tedd ki a PORTD-re a küldendő kódot, aztán várj egy kicsit (200-400ns a kábel és a bemenetek kapacitásainak feltöltődésére), aztán állítsd magasra az EN-t, aztán várj 1-2 uS-ost, állítsd alacsonyra az EN-t. Várd ki a végrehajtási időt. Az EN magas szintje alatt nem változhat sem az adat sem az R/S. - Az inicializáló B'00111000' -t háromszor küld el. - A kontraszt állító potenciómérrel talán elő lehet hozni valamit...
Nem jött be ez sem
Viszont turkáltam kicsit és találtam egy régi displaytech 204A 4x20-as displayt amivel viszont kiválóan működik! Ebből az következne, hogy szar a 4x16-os kijelzőm. Amit mondjuk nehezen hiszek hiszen már volt már többször használva. Nem lehet, hogy másképp kell vezérelni a két panelt??? Más ugyanis bennük a driver ic az egyikben ks0070b a másikban pedig st7066u (ezzel jó). Sajna mindenképp a 4x16-osat kell használnom a hely miatt, csak nem tudom merjek-e újat venni? Hogyan tudnám a legegyszerűbben kipróbálni?
Szia!
- Itt az alkalmazott vezérlő adatlapja, van benne 8051 assembly program az inicializálásra... - A megadott idők a 270kHz belső órajelhez valók. A frekvenciát egy (91kohm -+ 2%) ellenállás állítja be a OSC1 és OSC2 lábaknál. Volt már szerencsém olyan modulhoz, amelyiken az ellenállás törött volt. Az is lehetséges, hogy az órajel eltér egy kicsit, növeld meg az időket. - Vizsgáld meg az összekötéseket - egy modulnál a D6 kábelen szakadásom volt, nem inicializált a modul...
Nem találtam hibát a nyákon, ellenben gyanús folt van az IC-n.
Talán meg pirult egy kissé a drága Ha így van akkor nem tudom mitöl sülhetett meg... Tápfesz 5V 7805-ről, a Háttérvilágítás pedig 12-15V-ról megy (autó akku) 50ohm áramkorláttal.
Sziasztok!
mikroC-ben hogyan lehet külön hivatkozni a lábakra? Máshol láttam már olyat, hogy pl.: PORTB.4 , de itt ez nem működik.
A C18 támogatói programkönyvtár forrásában találtam egy egyszerű fixpontos osztási algoritmust az fxd3232u.c állományban (a kiterjesztés ellenére assembly kódról van szó!). Enne lényege az, hogy az osztandót bitenként kiléptetjük a maradékot tároló változóba, s amikor a maradék nagyobb, mint az osztó, akkor levonjuk, s ilyenkor a hányados soron következő bitjét is 1-be állítjuk.
A Daniel R. Madill, Quanser Consulting Inc. nevével fémjelzett, jól áttekinthető algoritmusnak köszönhetően az eljárás könnyen skálázható, csupán a rotáló, összehasonlító és kivonó műveleteket kell a megfelelő bitszámra kiterjeszteni vagy zsugorítani. Természetesen az algoritmus előjeles számokra is adaptálható a PICCOLO projektben négy pontban leírt módszerrel. A mellékelt mintaprogramban az eredetileg 32/32 bites osztást 32/8 bites (előjel nélküli) számokra egyszerűsítve mutatom be. Ha mind a 8 bitet ki akarjuk használni, akkor óvatosnak kell lenni: figyelni kell a hányados Carry-be kiforgatott bitjére is (lásd: bc nagyobb utasítás). Ha 8-nál kevesebb bites az osztó, akkor ez elhagyható.
Hello,
ha egy kicsit keresgélsz - akár ebben a topicban is, például úgy, hogy beírod keresőbe: "mikroC" -, akkor rátalálhatsz. Úgy tűnik, hogy a megoldás az, ha a regiszter neve után teszel egy pontot, az után pedig a lábakra "F0...F7" azonosítóval hivatkozhatsz. De még nézzél szét itt is, biztos, ami biztos: Bővebben: Link
Sziasztok!
Rászántam magam egy égető építésére, de megakadtam az induktivitás kiválasztásánál... A kiszemelt áldozat: Bővebben: Link. Namost L1-nél van egy kis választék, és ezek közül melyiket érdemes/kell venni? Valamint az L2 melletti felirat (100mA max), az a tekercsre vonatkozik, vagy csak tájékoztató jellegű? Ha elhagyom a fenti részt, ahol a 12 V "születik" akkor elég az L2 helyége bekötni a 12 V-ot? Üdv.: Litldákk.
Jó, de azok PIC16-hoz készültek. Ez a feltételvizsgálat enyhén szólva zavaros:
PIC18-nál ez ennyi:
Ezért örültem meg, hogyPIC18-ra optimalizált és jól áttekinthető kódot találtam. |
Bejelentkezés
Hirdetés |