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
![]() |
Bejelentkezés
Hirdetés |