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 „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.
![]()
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
![]()
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!
![]() ![]() 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
![]() 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 |