Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Na akkor fussunk neki mégegyszer:
Ez egy működő kód:
Egy a baja, hogy nem egészen pontos, és csak fél másodperces a max időzítés. Elmondom, hogy nekem mire lenne ez jó. Ha valamit gyorsan össze akarok dobni, és pl kellene 1s-os késlelettés, utána egy 2s utána egy 3s, és esetleg még egy 10ms is, akkor nem kell sem a timerekkel számolgatnom, sem a pedig delay ciklus változókat számolgatnom, hanem csak meghívom a Dlay macrot és utána írom az időzítést. Szóval tudom mi az a macro, de ezek szerint ilyen nincs senkinek? Üdv.
faja, most használtam a code gombokat is.
Inkább feltöltöm...
a [ code ] -t ki kell javitani [ code=asm ] -re (vagy [ code=C ] -re, ha tudod javitsd ki, ha nem remeljuk Norberto vagy valaki megfarigcsalja need
Na okés, közben rájöttem, hogy miért nem ment.
Nem 24 bit volt lefoglalva a memoriában neki. Most már megy. Azért köszi a segítséget
Huh, az aposztrof megkavarja a HE syntax highlightingjat
Na mindegy, igy mar sokkal atlathatobb es rendezettebb a kod! Ket eszrevetelem lenne mar csak: 1. A goto $-3 -akat es hasonlokat lecserelnem cimkes ugrasokra (lokalis cimke makron belul). Ezzel sok fejfajastol mentesulhetsz ha egyszer valamiert a kodhoz kell nyulni (mondjuk a goto $+1 -et nem szoktak, kiveve ha portalod 18F-re, mert ott 16 bites a progrm szo es byte-os a program memoria cimzes, tehat ott ugyanaz goto $+2 lenne - sot bra $+2...) 2. A DlayValue ha nem shared memorian helyezkedik el akkor problemak adodhatnak mivel nem latok bank szelekciot a makroban. Lehet egy BANKSEL DlayValue nem artana a makro elejen. Amugy akkor ez mukodik 4 megan, 20 megan is? Mik a limitacioi? Idézet: „hanem csak meghívom a Dlay macrot és utána írom az időzítést.” És tele lesz a programod egyedi várakozási rutinokkal, ami közben semmi más nem fog működni, még egy gomb sem. Persze ha csak valami primitív egyszálú programot írsz(pl. LED villogtatót), akkor mindegy neki, de akkor is szakbarbárság. Felhívom minden kezdő figyelmét, hogy a beszúrt kódokból ne tanulják meg, hogyan kell időzíteni, mert ez nem időzítés, hanem várakozás! Így max 10mS időtartamot lehet megoldani, de azt is csak néhány helyen és olyan programban, amiben közben nem kell mást csinálni. 10mS alatti megoldásokhoz viszont nem kell ekkora felhajtás. Elég egy egyszerű ciklus 255 alatti számlálással. Ezen kívül ha van engedélyezett megszakítás lekezelés a programban, akkor az egész várakozási idő felborul. (azaz még a megszakítást is le kell tiltani, hogy pontos legyen a semmittevés ) Szóval az egész megoldás több sebtől vérzik, és kerülendő!
Ez teljesen jó megoldás, mintha láttam volna Microchip appnote-ot is ilyesmire. Legutóbb egy HP lapos moncsi kezelőpaneljén fedeztem fel ezt a megoldást. A 4 gomb egy vezetékre van felfűzve különböző ellenállásokkal így egyetlen vezetékpáron megy a nyomógombokról az infó a főpanelre.
Szerintem egy egyszeru low pass filter amugy is kell ra az pedig lehet akar debouncing is, nem? Tehat egy soros ellenallas es egy keramia.
De valoszinuleg valami nagyon egyszeru digit szuro is megteszi. Amugy ha jol vannak megvalasztva az ellenallasok talan tobb gomb egyideju nyomasat is korlatozott korulmenyek kozott lehet merni. Es akkor ezt egybe lehet vetni a digit szurovel is, tehat bizonyos ideig ugyanazt kell merni ahhoz, hogy a gomb nyomasa el legyen fogadva, igy a ket gomb nyomasabol adodo idokulonbseg is megoldott.
Sziasztok! A PIC16F630 ugye teljesen átlagos módon programozható jószág? Mégis el tud működni 3V-ról? (Egy kapcsolásban így láttam). Ugyanez kérdés a 74HC259-re is, bár az nem igazán ide tartozik... Köszi!
Rögtön az adatlap legelején, a tulajdonságok felsorolásánál:
Wide operating voltage range - 2.0V to 5.5V Amúgy amivel én találkoztam PIC, az mind megy 3V-ról adatlap szerint is. Az más kérdés, hogy van, amelyiknek a programozáshoz minimum 4.5V tápfeszültség kell, de a normál működést ez nem befolyásolja.
Nézd meg az adatlap elekromos specifikációs részében(12. bekezdéstől) a táblázatokat is, mert különböző feszeknél, különböző frekitartományokban működhet csak.
Helló Mindenkinek.
A következő a kérdésem. A saját kis programocskámban használom a PCL regisztert, a következő cím megadásához, kiszámításához. De ha a PCL értéke nagyobb mint 256, azaz a 8 bit túlcsordul, akkor hibás helyre ugrik. Tudom, olvastam, hogy van a PCH regiszter, de az nem írható olvasható közvetlenül. Milyen megoldást javasoltok? Köszönettel.
A PCH akkor íródik, amikor a PCL-t írod. Hogy mi kerüljön a PCH-ba, azt a PCLATH regiszterbe kell beírni, még mielőtt írod a PCL-t. Ugyanígy, ha olvasod a PCL-t, akkor a PCH tartalma átkerül a PCLATH regiszterbe.
Valahol van a microchip application note-jai között egy, ami a nagyméretű táblák kezelésével foglalkozik, de most nem találom.
Helló potyo.
AN556 a leírás. Ebéd után megpróbálom felfogni. Köszönöm
Persze, hogy a PHC nem irhato, mert gondolj bele mi tortenne, ha igy akarnad feltolteni:
Nos, ha kozvetlenul bele cimeznel a PCH-ba akkor mar a 2. utasitastol elkodorolna a programod... Eppen ezert bevezettek egy latch regisztert, a PCLATH -t. Ebbe nyugodtan bele irhatsz akar mikor, es mikor a PCL-be irsz (pl movwf utasitassal vagy addwf-el) akkor ennek a latch-nak a tartalma automatikusan attoltodik a PCH-ba... magyaran egy index alapjan valahogy igy tudnal ugralni:
Vannak chipek ahol a memoria meret meg a 64k-t is meghaladja, ott meg PCLATU is van, az adatlapban nezd ki, hogy mi a helyzet a tieddel.
Helló Trudnai.
Köszönöm a válaszodat. Ez a példa már használhatóbbnak tűnik a számomra. (a megértéshez) Most rágódom, és próbálkozom, és ha lesz kérdésem akkor kérdezek. Köszönettel.
Helló Trudnai,
Hogy, felfogtam e azt nem tudom, de működik. (persze hogy felfogtam) Köszönettel.
Jó reggelt mindenkinek.
A mai kérdésem a következő. A PIC memoriáját mennyire lehet teleírni programmal? Kell hagyni helyet a program futásának? Mert én most egy kis PIC-ket nagyon teleírtam, MPLAB simulátorban müködik, de élesben nem. Köszönöm.
Ameddig a programmemória tart, addig írhatod. Nincs szüksége extra helyre ahhoz, hogy fusson, mivel ami fut, azt már beleírtad.
Két kivétel van talán: az egyik, ha használni akarod a debuggert-t élesben, mert akkor vannak foglalt területek, illetve ha önmódosító programot akarsz írni, és véletlenül túllógna a vége. Ha viszont az MPLAB rendben lefordítja, akkor inkább valami hiba miatt nem fut. (Esetleg elérted a kontroller törlési / beégetési képességeinek határát, és nem megbízható már a program megtartása, de szerintem ez azért elég ritka, még mindennapos újraégetés mellett is.)
Szia!
Teljesen tele lehet írni, lehet a konfigurációs biteket nem állítottad be jól a programozáskor (szimulációnál nem mind jelentkezik!)! Jó munkát! Steve
Hello!
Én egy korábbi témámat szeretném folytatni(469). A kapcsolást módosítottam a javaslatok alapján. A problémám most az,h. a pic csak az RA0-RA3 portokat vezérli.További gond, hogy a max 11-es és 12-es lábán lévő fesz az RB1,RB2 kimenetet állandóan 5v körül tartja a többi láb nem vezérelhető.Az asm kódot a parsic állította elő. Akinek van ötlete, vagy csinált már ilyet kérem segítsen.
Csináltam már ilyet, kb. 6-8 évvel ezelőtt, mikor kezdtem játszadozni a PIC-ekkel, de ez a Parsic csak felidegesít! Mért nem dobod ki és próbálod MPLAB-al megoldani. Már rég túl lennél rajta. Ott nincs olyan, hogy miért nem megy, mert ott minden egyértelműen levezethető az okokra. A Parsic-ot közülünk szerintem senki nem ismeri, ezért neked sem ebben kéne kínlódnod. Egy ilyen LED vezérlő progit, a Te hardveredre fél óra alatt össze lehet dobni! C-ben még kevesebb idő alatt, bár a C-is olyan nyelv, amit akkor érdemes használni, ha már az asm és azon keresztül a PIC teljesen fel van derítve, mert a C is hajlamos elfedni a lényeget!
Tehát ha úgy gondolod, szívesen segítek az MPLAB úton elindulni, és azt hiszem teljes bizonyossággal kimondhatom, hogy nem csak én! A 11,12 lábon már említettem, hogy nem baj hogy ott kb. 5V a fesz... Még a generált ASM-ról annyit, hogy teljesen áttekinthetetlen, látszik, hogy egy program generálta. Ezt sokkal kevesebb sorból is meg lehet oldani.
Helló kobold, és kissi.
Köszönöm a tanácsokat, visszamegyek a kályhához, az utolsó működő változatba írom be, a bővítéseimet, és meglátjuk hol áll meg. Érdekes, hogy az utolsó változatot, az MPLAB nem akarta beégetni, (már a 00-s címre olvasási hibát jelzett, míg a PICKIT 2 égetőprg-je csont nélkül beégette. Másik (új) Pic-kel ugyan ez a helyzet. Köszönöm, jó hétvégét.
Helló.
Az égetési gond megoldódott, az MPLAB-ban valahogy bekapcsolódott a code protect. Így nem engedte sem olvasni sem összehasonlítani. Köszönettel.
Helló Mindenki.
Reggel óta nem tudok rájönni, hogy az alábbi programban a következő cím miért a 302H. Ez egy karakter kiírató prg, néhány karakter kiírása után, itt a 302 címre ugrik és nem pedig a következő sorra? Miért? Köszönettel
Mert a PCLATH-ban rossz érték van (3), szerintem...
Helló kobold.
Tényleg nem szép az a 3-mas, de akkor is hogy lehet ez a következő lépés? Köszönettel
Szerintem a W tulcsorog, igy hogy 0 van benne nem menet oda a vezerles (max ha az F8-at nyomogatod el "elszokik" a program es mit tudom en egy WDT-nel leall a szimulacio es epp azon a ponton kovetkezik ez be).
En a W-re tippelnek, es nem tudom van-e a W-re maszkolas mielott ezeket a rutinokat meghivod de ha nincs akkor egy andlw b'00000111' nem artana oda (mivel 7 elemuek a tombjeid ha jol latom).
Annak a lépésnek a végrehajtása után a 0x36C címen akarna folytatódni, meg kellene nézni, ott mi van. Lehet, hogy az kintebb esik a programod területén és emiatt képtelen kezelni a debugger.
Helló Trudnai és Szilva.
Köszönöm, a segítségeteket- A W-vel nem lehet gond, hiszen új karaktert kezdett, és az ugrótábla első elemét kéne kiolvasnia. Tehát oda "0" kell. A 36C-t megnézem. Közben arra jöttem rá, azokat a karaktereket szépen kiírja, amelyeknél a PCLATH kiolvasása után, elugorva a kiírandóra, ugyanaz a 'felsőcím' mint a PCLATH-ben, és hibázzik,(megbolondul) ha a 'felsőcím' eltér a PCLATH tartalmától. Ezt kell megkeresnem. (szerintem) Csak az a baj, hogy ahová ugrik, ott egy meghívás van és oda nem tudom tenni a PCLATH kiolvasását. Persze próbálkozom. Köszönöm a segítségeteket, ha elakadok, kérdezek. |
Bejelentkezés
Hirdetés |