Fórum témák
» Több friss téma |
Nem néztem át, de a sor 11,12,13 mit csinál ?
A 11,12 semmit, mert van előtte ; A 13 digitális I/O-ra állítja a lábakat.
így talán jobb:
A hozzászólás módosítva: Máj 20, 2015
Idézet: pontosabban utána van a clrf, ezért írtam !„A 11,12 semmit, mert van előtte” A végén a goto $-4 szerinted hova megy (próbáld ki a szimulátorral! ), egyébként jobban járnál cimkékkel ! Utána --> Konfigurációs bitek ?
Aham! Annak $-5-nek kéne lennie! Ez így jó is. Már csak azt kéne kideríteni, hogy a GP3 miért nem megy.
Nézd meg a GP3 leírását(kapcsolását!) és rájössz !
szerk.: a megszakítást ne írd bele, amíg nem használod ( ennek nincs köze a GP3-hoz!)!! A hozzászólás módosítva: Máj 20, 2015
Idézet: Miert nem cimket hasznalsz? „Annak $-5-nek kéne lennie!”
Mert nem vagyok elég kreatív ahhoz, hogy ennyi értelmes címkét kitaláljak!
Basszus! Csak bemenet lehet...
Szerk: A hozzászólás módosítva: Máj 20, 2015
Nem lesz értelmetlenebb cimke000 - cimke999, mint a $-30 !
Viccet félretéve: 1, esetleg 2 sorra jó, tovább nem !
Nem értem! Ha a megszakításokat engedélyezem akkor nem csinál semmit.
Hol a megszakítás kiszolgálása, jelzőbit törlése?!
Azt a részt nem másoltam be, de elvileg nem mehet megszakításba, csak engedélyezve van.
Azon gondolkodtam, hogy az lehet esetleg attól, hogy az áramkör breadboad-on van összerakva és az INT láb lebeg?
Pali!
Ha esetleg leírnád, mit is akarsz csiálni, mi lenne a dolga ennek a PIC-nek, nagyobb eséllyel tudnának segíteni! Lehet, hogy a választott PIC nem is alkalmas a feladatra.
A lényeg, hogy van két potméterrel beállított analóg értékem. Az INT lábon számolom a külső forrásból jövő impulzusokat. Az egyik beállított értéket és a megszámolt impulzusokat hasonlítom össze. Ha egyezik az érték, magas szintre húzza az egyik kimenetet és indítja Timer1-et. A kimenet addig van magas szinten amíg a Timer1 túlcsordulások száma eléri a másik beállított analóg értéket.
Leegyszerűsítve a feladat az, hogy egy beállítható impulzusszám után legyen egy magas szintű jel egy beállítható időtartamig. Szerintem ez nem bonyolult feladat és a PIC12F675 pont elég is hozzá.
Tehát nem a bejövő jel frekvenciája érdekel téged, csak az inpulzusszám?
Akkor minek a megszakítással bíbelődni? Ha jól értelmezem a feladatot, akkor én ezt a következő módon oldanám meg: Beolvasom 1-es poti értékét, és letárolom. Pl. ADRESL >> 0x20 ADRESH >> 0x21 Ezután beolvasom 2-es poti értékét, és letárolom. ADRESL >> 0x22 ADESH >> 0x23 Ezután várok a bejövő jelre. Ha adott bemenet magas szintre kerül, 1-et levonok 0x20-ból DECFSZ utasítással. DECFSZ alatti GOTO utasítás egy bejövőjel figyelésre ugrik, és addig ott marad, amíg a bejövő jel alacsonyra nem vált. Onnan visszaugrik várni a bejövő jelet. Ha 0x20 lenullázódik, átugorja GOTO-t, és ugyancsak DECFSZ-el 1-et levon 0x21-ből. Az alatta lévő GOTO az előzővel megegyező helyre ugraszt. Ha a második GOTO-t is átugorja, jöhet a kimenet bekapcsolása, és az időzítő. Az időzítőnél sem kell megszakítás. egyszerűen a tulcsordulás bitet figyeled. Ha túlcsordult az előzővel egyező módon csökkented 0x22 és 0x23 értékét, majd újraindítod az időzítőt. Ha lejárt, kikapcsolod a kimenetet, és újra indítod a progit a potibeolvasással.
Nagyjából most is ezt csinálja a program csak megszakítással. Este majd megnézem, hogy ha így átrendezem a progit akkor mit csinál.
Hozzáteszem, a szimulátorban tökéletesen működik így is, csak a breadboard-on nem. A hozzászólás módosítva: Máj 21, 2015
Közben rájöttem, hogy ez a módszer azért nem jó ebben a formában, mert az AD 10 bites értéke kevés. Egy 16 bites értékhez kell tudnom hasonlítani, vagy azt csökkenteni, a 10 bit sajnos kevés.
Ezt értem, de ha az AD csk 10 bites, hogy lessz neked a potival beállított jeled 16 bit?
Ráadásul nincs az a helipoti, amivel 65000 külömböző álapotot fel tudnál vetetni.
Ha nem húztad fel ( vagy le ) egy ellenállással, akkor persze, mert a zajok miatt beléphet folyton megszakításba és nincs ideje mással foglalkozni !
A program egy-egy helyére rakj be egy LED bekapcsolást és akkor látod, hogy meddig jut el ( ha nem megy, akkor szakaszolni kell !!) ! Konfigurációs biteket jól állítottad be ( szimulációban az nem biztos, hogy előjön!) !
Sikerült kiszűrnöm, hogy a T1CON beállítása után nem működik. Sajnos az angolom még elég gyatra, nem egészen értem a 3. és 6. bit mit is csinál pontosan. Lehet ott van a blöki elásva.
Igen, lehet, hogy gondot okoz, ha belső oszcillátort használsz órajel kimenet nélkül, ezért kértem a config biteket is !
A T1CON 6. bitje engedélyezi, hogy a T1G lábon levő jel engedélyezze a TMR1-et, a 3. bit az alacsony frekis oszcillátort engedélyezi (általában egy 32kHz körüli órakvarc az OSC lábakon). Úgy látom te a belső órát szeretnéd használni, akkor '00110000' kellene, de csak a TMRON bebillentésével indul el az egész, de előtte illik beállítani a TMR1L-H értékeket.
A megszakítás beállításánál a GIE bitet már csak akkor billentsd be, ha mindent beállítottál. A megszakításban az INT megszakítást akkor is törlöd, ha TMR megszakítás volt, így veszíthetsz impulzust (ami a megszakítás alatt jött), ellenben, ha a km számlálód eljut a 24. sorig automatikusan lépteti az időt is.
Itt a config:
Idézet: „előtte illik beállítani a TMR1L-H értékeket.” Ezt nem egészen értem. Alapból 0-ról indul, nem? Végül is a T1CON okozta a galibát, '00110000'-val jó lett! Idézet: „A megszakításban az INT megszakítást akkor is törlöd, ha TMR megszakítás volt, így veszíthetsz impulzust (ami a megszakítás alatt jött), ellenben, ha a km számlálód eljut a 24. sorig automatikusan lépteti az időt is.” Ezeket is köszönöm! Igen értékes észrevételek! Most úgy működik, ahogy én szeretném, bár még csak alap beállításokkal, de már tudom tesztelni legalább. Hétvégére elutazom, folyt. köv. hétfő este. Nagyon köszönöm kissi-nek és sonajkniz-nek is a segítséget. Idézet: „_INTRC_OSC_NOCLKOUT” Ha ez nincs, akkor nem okozott volna gondot a T1CON ( így bekapcsoltad az alacsonyfrekvenciás osc. lehetőséget... ! A ktamas66 által jelzett programhibának a szimulátorban is ki kellett volna jönni, figyelj a tesztelésnél! További jó munkát !
Miért pont 0-ról indulna ? Az alapértelmezett értékeket az 5-1 táblázat tartalmazza, ott láthatod, hogy bekapcsoláskor ismeretlen, reset után az előző érték marad benne.
|
Bejelentkezés
Hirdetés |