Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok, ujra kellett raknom a winfost. MPLAB ujratelepítés ota nem ismeri fel a PIckit 2-met. Konkrétan ezt írja:
Initializing PICkit 2 version 0.0.3.63 PK2Error0009: Write failure (GetLastError = A leíró érvénytelen.) PICkit 2 Ready Vkinek 5let?
Állítsd az eszközt az MPLAB-ban None-ra, húzd le, 10 másodperc múlva dugd vissza, majd újabb 10 másodperc múlva válaszd ki az MPLAB-ban, és úgy próbáld.
Sajnos nem használt, az üzenet továbbra is fennáll
Feltettem a Pickit saját progiját azzal tökéletesen megy, ergo biztos vmi MPlab hiba. Ujra is raktam már de az sem segített
Üdv!
Valaki meg tudja mondani, hogy a PIC16F628-as PIC-nek belső oscillátora van, vagy ezt külön rá kell kötni. Ha igen, akkor mekkorát érdemes? A válaszokat köszönöm!
Idézet: „Valaki meg tudja mondani, hogy a PIC16F628-as PIC-nek belső oscillátora van, vagy ezt külön rá kell kötni. Ha igen, akkor mekkorát érdemes?” 1. Ennek a kérdésnek nincs semmi értelme(főleg, hogy az első mondatod végén pont van!), csak ha nagyon akarom, akkor értem meg, hogy mit akarsz! Fogalmazni sem tudsz, akkor hogy akarsz PIC-el foglalkozni? Az nem egyszerű dolog, gondolom tudod!? 2. Az adatlap világosan leírja, hogy mi a helyzet, idézem. Idézet: „Selectable oscillator options - FLASH configuration bits for oscillator options - ER (External Resistor) oscillator - Reduced part count - Dual speed INTRC- Lower current consumption - EC External Clock input - XT oscillator mode - HS oscillator mode - LP oscillator mode” Aztán az oszcillátoroknál az adatlap ismát részletesen tárgyalja a dolgot: Idézet: „• LP Low Power Crystal • XT Crystal/Resonator • HS High Speed Crystal/Resonator • ER External Resistor (2 modes) • INTRC Internal Resistor/Capacitor (2 modes) • EC External Clock In” Majd itt még egyértelműbben leírja mia a helyzet: Idézet: „14.2.6 INTERNAL 4 MHZ OSCILLATOR The internal RC oscillator provides a fixed 4 MHz (nom- inal) system clock at Vdd = 5V and 25°C, see “Electrical Specifications” section for information on variation over voltage and temperature.” Ha azt várod, hogy más oldja meg azokat a kérdéseket, amiket te is meg tudsz oldani(meg kell tudj oldani, ha ezzel akarsz foglalkozni) akkor ne csodálkozz, ha ilyen válaszokat kapsz! Használd az adatlapot és a fejed(és tanulj meg fogalmazni és írni!)!
Helló mindenkinek!
Pic-el szeretnék egy távirányító vevőt építeni. De nem tudom hogy kellene elkezdeni. Két verziót gondoltam, az egyszerűbb, hogy megnézem előre a kódot, amit a távirányító ad (van gépemhez infra vevő, a girder nevű progi, és az kiírja a kódot...), és utána csak ezt kellene analizálni. A bonyolúltabb, pedig majd az lenne, hogy tanítható is legyen. Assemblerben írom majd a progit. TSOP 1736-om van itthon erre a célra. Ötleteket várok, hátha valaki már jártas a témában. Gondolom ccp modullal kellene kiolvasni a jelsorozatot? Vagy egyyébb ötlet?
CCP jónak tűnik, de akár egy INT lábbal meg timerrel is megoldható, sőt még INT láb nélkül is úgy, mint ahogy a szoftveres UART adatfogadás történik.
Igen a CCP modullal lehet digitális jelet analizálni fel és lefutó jelnél egyaránt. Ezt fel lehet használni tanítható távirányító építésére is.
Ha fixen bedrótozod a programba a jelet, akkor erre nincs szükség, csak valahogy meg kell tudd nézni, milyen az eredeti jel. (off) A programod nem tudja megjeleníteni az időket, azaz oszcillogrammot meg tud jeleníteni időkkel? Ha nem, akkor esetleg a vevő jelét fel lehetne venni hangkártyával és egy szerkesztő programmal ki lehetne analizálni.
Akkor jó, ha nem muszály ccp-t használni. INT + timer megoldás egyszerűbbnek néz ki. Végülis elég a "fixen bedrótozott" megoldás,mert arra szeretném hazsnálni, hogy távirányítóval lehessen egy lámpát ki, és bekapcsolni,meg fényerőt állítani.
Sajna a progi nem tudja, de szkópon néztem már meg a jelet. Hangkarival fel tudom venni. Most igazából azt kellene megtudnom, hogy milyen időközönként követik egymást a bitek? Idézet: „Akkor jó, ha nem muszály ccp-t használni. INT + timer megoldás egyszerűbbnek néz ki.” Nem egyszerűbb, már ami a programot és a pontosságot illeti. (feltéve, ha már érted a működését a modulnak) Idézet: „Végülis elég a "fixen bedrótozott" megoldás,” Akkor egyik megoldásra sem lesz szükséged(sem CCP, sem INT, sem szoftveres) Idézet: „Most igazából azt kellene megtudnom, hogy milyen időközönként követik egymást a bitek?” Pontosan. Tudnod kell pontosan a jelalak magas és alacsony szintjeinek időtartamát, és ezt leprogramozni. Nem nagy ügy...
Megcsináltam nero waw editorral. Az első képen kinagyítottam a lényeget. A második képen a távirányító nyomvatartva.
CCP mudult tanúlmányozgattam. Akkor szoktam igazán megérteni, amikor már programmal is megírtam, és látom hogy miért működik. Idézet: Egyenlőre nekem még az De majd leesik. Legutóbb I2C-s hőmérőt programoztam, lm75-öt.Az volt idáig a legnagyobb projektem Két nap alatt sikerült megcsinálni. Kb 10órámba került + előtte megtanúlni az i2c-t, az is jópár óra. Ezt csak azért írom, hogy a tudásommal kicsit tisztába legyetek. „Nem nagy ügy...”
Nah ha jól értelmezem 1ms egy bit, de még felrakok egy másik progit, amivel lehet jobban ki tudom elemezni. És valóban egyszer küldi ki a jelet. Utána már csak az átvitel indító bitje van. Ezt nem is tudtam.
(off)Próbálkozz a SoundForge-vel, az elég jól ki tudja nagyítani...
Idézet: „Két nap alatt sikerült megcsinálni.” Minek ez a nagy rohanás? Ha az adatlapokat is tüzetesen megnézed, meg a szoftver megoldásoknak is alaposan utánanézel, könnyen elszaladhat egy-egy ilyen feladattal akár két hét is. De érdemes rászánni, mert a tudásod alaposabb lesz.
Mert két nap alatt csak ezzel foglalkoztam. Egyébként sehogy nem jön ki az a kód, amit a girder program ír ki, azzal, ha átváltom a sound forge-ben kapott kódot. Úgyhogy így elakadtam.
Igazad van,érdemes több időt rászánni,megismerni részleteiben a dolgot.
Én is most éppen I2C kommunikációval foglalkozom, és már egy TC74-es hőszenzor, egy 24FC256 EEPROM, és egy DS1337 RTC is van a buszon.Már egész jól megy, igaz tényleg 2 hete írom a programot. Ha ez megvan akkor jön az SPI. üdv Idézet: „Ha ez megvan akkor jön az SPI.” Az meg olyan egyszerű, mint a faék, így nem lesz sok gondod vele...
Igazából nincs is konkrét feladat, csak tanulás a cél.
Majd nézek itt is valami hőszenzort meg memóriát, és azzal fogom próbálgatni. üdv Idézet: „Majd nézek itt is valami hőszenzort ...” Nézhetsz digitális potenciométert (pl. MCP41050 és társai), portbővítőt (MCP23S08, MCP23S17) vagy SPI vezérlésű Digital-analog konvertert is, hogy ne mindig a hőszenzor legyen terítéken.
Igen, elég széles a Microchip palettája ezen a téren.(is)
Hőszenzorból úgyis csak smd tokost találtam egyelőre.(TC72,TC77)
Nem megy sajna a távirányító dekódolás. Elég beteg vagyok,lehet azért nem fog eléggé az agyam. Próbáltam feltérképezni a jelet is, de hiába írtam programot, nem jó. A képet mellékeltem. A progi pedig olyan elven ment, hogy btfsc parancsal teszteltem azt a portot, amire rá volt kötve a tsop kimenete. Ha kapott jelet, várt 10ms-et,majd 1ms-onként tesztelte a port állapotát. Az egészet úgy csináltam, hogy 60ms legyen a periódusidő összesen, mert annyi a távirányítónál is egy jelsorozat. Még csak 8 bitet olvastattam be ily módon, és raktam ki portra, ledekre, de mindíg ugyan azok a ledek világítottak szinte, akármelyik gombot nyomtam Ötleteket várok.
Egyrészt nem vagyunk jósok vagy látnokok, hogy lássuk milyen a programod, azaz hogyan akarod ezt megoldani(csatold az asm-ot, készülj fel a kritikára, nem fogsz belehalni, feltéve, ha nyeled a békát, ami jár! Feltéve, ha jár! ).
A másik, hogy azt mondtad, hogy nem akarod a jelet elemezni, hanem be akarod égetni fixen, akkor most meggondoltad magad? Mert ha igen, akkor inkább a CCP modult ajánlom, bár kb. háromféle módon lehet ezt megoldani... A jelről annyit, hogy úgy túnik mindegyik ugyanúgy indul(hosszabb L szakasz, kicsit rövidebb H szakasz(valószínű szinkronizációs céllal), majd jön a kód. Te valószínű csak ezt a szakaszt kezelted le, de lehet hogy tévedek(kód!)... A másik gyanúm, hogy a jeled inverze a valóságos fényintenzitásnak. (tehát a nem világításból indulunk, ami L szint egy diódán) Egyébként az egyik megoldás megszakítás nélküli megoldása az lenne, hogy beállítod valamelyik Timert egy relatív alacsony számlálási ütemre, olyanra, hogy ne csorduljon túl a leghosszabb szakasznál se(Ha szükséges, akkor a PIC órajelét is csökkenteni kell, vagy a túlcsordulásokat is számolni kell!). Amikor észlelsz egy szintváltást, eltárolod a számláló tartalmát, majd a következő szintváltáskor kivonod az előzőt a jelenlegiből(hozzáadod a túlcsordulásokat is, ha kezelni szükséges) és a jelenlegit újra eltárolod. Az így kapott számok sorban arányosak lesznek a jelek közötti idővel. A CCP modul ebben segít sokat, mert eltárolja a megszakításnál a Timer értékét, van időd kiolvasni, nem szalad el a ló!
Csatolom akkor, és várom a kritikát
Ugye itt egy 18F-ről van szó, ahol a kimenet kapcsolgatáskor inkább a LAT regisztert kellene piszkálni és nem a PORT-ot. Ha a LAT kapcsolgatásakor villog a LED, akkor viszont elektromos probléma van az áramkörrel, leginkább túl kicsi (vagy semmilyen) soros ellenállás a LED-nél.
Akkor kezdem!
Nos, az első és talán az utolsó kritika az, hogy a megjegyzéseket nem nekem írod, (bár nagyon örültem volna, ha tudom mit szerettél volna attól a sortól ami talán teljesen mást csinál), hanem magadnak. Tehát mindig írj megjegyzést, még ha kétsoros a program akkor is. Én azt hiszem, hogy azt szeretted volna, hogy várakozásokkal időzítetten, baudrate szerűen levizsgáltad volna a jelfolyamot, és ezt eltároltad volna a bájton(A1), amit a végén megjelenítettél volna D porton. Biztosan jó baudrate-t állítottál be? Milyen az oszci sebessége? Lemodellezted a simulátorral, hogy a várakozás mekkora időtartamú? Ha igen mennyi? Egyezik a vizsgált jeled mért periódusidejével? Mennyi ez a periódus, amit mértél?
Jól van, mostmár máshogy megoldottam, és megy a dolog. PORTB,0 lábon a bemenet, vizsgálom az INTCON,INTF bitet, és minden lefutó élnél eltárolom a TMR0 értékét. Hogy egyszerűbb legyen, minden eltárolás után nullázom a TMR0-t. Szépen működik így már. Mostmár csak szép progit kell hozzá írni Mert eddig csak úgy csináltam, icd2-vel Brake pontot raktam az olvasás végére, és az eltárolt TMR0 értéket megnéztem a Watch ablakkal .Most először nagy hasznát vettem végre az ICD2-nek.
Köszönöm a segítséget, innentől már menni fog. És bocs, ha sokat hablatyoltam, de hátha valakinek adtam ötletet vele! Üdv mindenkinek!
Egy csomó dolgot nem lehet automatizálni az MPASM-ben, mert a linker olyan buta, hogy ő már nem tud számolni, csak behelyettesíteni a relokálható szimbólumok értékeit. Most nem emlékszem, hogy pontosan mi volt, de én is futottam már bele ilyesmibe, hogy a forrásban valami kifejezést akartam elhelyezni, hogy "univerzális" legyen, de a linker nem bírt vele sehogy, nem sikerült a problémát megoldanom.
Többek között ilyenek miatt sem lehet normális rutingyűjteményt csinálni PIC-ekhez, hogy egy másik, itt felmerült témához is hozzászóljak.
A watch-ban jó lenne látni TIME címét/értékét is. Lehet, hogy bankolási probléma lesz, nem tudom pl., hogy a MOVWF-nek így írva access vagy banked-e az alapértelmezése, és hogy a BSR jól áll-e.
|
Bejelentkezés
Hirdetés |