Fórum témák
» Több friss téma |
16F1827-nél még nem volt gondom.
![]()
Ide is beírom, mert itt szebben látszik. Másik fajta BASIC, ADC olvasás. MokroE Library kicsit limitált.
Nem is egyezik a kettő ADC modulja. 16F1827 még a régebbi módot használja.
Akkor ez a baj.
![]()
Nem baj az, annyira nem különböző. Azzal a beállítással amit privátban írtam, pedig működnie kellene. Én inkább azt mondom, hogy a MikroE kutyul bele a dologba.
Értem, köszi a segítséget.
PIC24-nél a veremmutató beállításával van problémám. A debugger szépen működik, tudom léptetni utasításonként a programot, ha W15-be 0x800-at töltök. Reset után alapból is erre az értékre áll be W15. Viszont ha bármi más értékre állítom W15-öt, akkor a programot ugyan lefordítja, de nem működik a léptetés. Mi a probléma? Csak a debugger vacakol, vagy nem így kell a veremmutatót más értékre állítani?
Na csak sikerült végre, jól mondtad az ADCON2 volt a gond. Közben már megy belső referenciával a 12bit-es ADC. Valamint az enkóder is megszakítással. Nagyon köszi mégegyszer!
A hozzászólás módosítva: Márc 3, 2019
Ne felejtsd el beállítani a veremmutató felső értékét sem!
Már működik, de nem változtattam semmit, szóval nem tudom, mitől javult meg. Az SPLIM beállítása ajánlott, de nem kötelező. Az adatlap szerint SPLIM akkor válik csak aktívvá, ha értéket töltünk bele.
Sziasztok!
Nekem olyan kérdésem lenne a PIC16LF18456 programozása közben, hogy ha én használok egy timer2-t és kikapcsolom, akkor a T2TMR értéke törlődik? Valamint a PR regiszter is resetelődik? Ha újra bekapcsolom, akkor a PR regiszter értékét újra be kell állítanom? Az adatlap valami ilyesmit ír. "The T2TMR and T2PR registers are both directly readable and writable. The T2TMR register is cleared and the T2PR register initializes to FFh on any device Reset. Both the prescaler and postscaler counters are cleared on the following events: • A write to the T2TMR register • A write to the T2CON register • Any device Reset • External Reset Source event that resets the timer. Important: T2TMR is not cleared when T2CON is written." Idézet: „ha én használok egy timer2-t és kikapcsolom, akkor a T2TMR értéke törlődik?” A doc szerint én azt gondolom nem. A T2CON.ON bittel kapcsolod be és ki a timert, az adatlap pedig leszögezi, hogy T2TMR nem törlődik T2CON írásakor. T2PR még inkább logikus számomra, hogy marad a beállított értéken egy resetig.
Mint ahogy írták, normál kikapcsoláskor nem törlődik semmi. Viszont ha PMD-vel kapcsolod ki (gondolom ebben is van), akkor elveszi tőle a tápot, így ekkor esélyes, hogy törlődik. Talán leírja valahol az adatlap, még nem néztem meg.
Köszi.
Tehát ha egy kis időre kiszeretném kapcsolni a timer2-t, akkor elég csak az ON bit-et törölni. Amikor újra bekapcsolom és azt szeretném, hogy előről kezdje a számlálást, akkor elvileg elég a T2TMR regisztert törölni a bekapcsolás előtt? A PR regiszter tartalma meg elvileg változatlan lesz.
Heló!
PIC-nél a LATX és a PORTX utasítások között mi a külömbség C programozási nyelv esetén? Vagy ez csak Assemblynél számít? Köszi! ![]()
PORTX olvasása a kivezetések aktuális állapotát olvassa be (0 -t, ha analóg módban van a láb), a LATX a utoljára beírt értéket.
Pl. a PIC -hez képest a a lábon lassan áll be a kimeneti érték (avagy be sem áll a magas szint) a következő programrészlet hibásan fut le: PORTA |= 0x01; PORTA |= 0x02; Hiszen ezek a műveletek beolvassák a PORTA regiszter értékét, elvégzik a műveletet és kiírják az eredményt. A második művelet csak akkor lesz jó, ha az első hatása már 1 utasítás végrehajtási idő múlva magas szintet eredményez a RA0 lábon.
Ha bemenetként használod, PORTX regisztert kell olvasd, hogy a bemenet állapotát megismerd.
Ha kimenetként használod, LATX regisztert kell írjad, hogy a kimenet állapotát megváltoztasd.
Értem, köszönöm!
![]() Ha kimenetként használom mondjuk a PORTA-t, és a PORTA = 0xFF értékadással a kimeneti érték bekerül a LATA regiszterbe is? (csak kíváncsiságbol kérdezem).
És még egy kérdésem lenne.
Pontosam mit jelent, a a láb analóg módban van? Nézegettem az MPLAB Code Configuratort, és az egyes lábaknál be lehet kepcsolni ezt a funkciót. Ez ADC esetén használatos? Ha igen, akkor miért van az output esetén is ez a választási lehetőség, holott nincs is benne DA konverter.
Idézet: „Pontosan mit jelent, a a láb analóg módban van?” Digitális bemenetek esetében a lábakon általában a logikai 0 ill. a logikai 1 feszültség tartományba eső feszültség szintre kell számítani, a köztes szintek csak rövid időre fordulnak elő. A bementi jelváltozása igen gyors lehet, a zavarok kiszűrésére Schmidt - trigger -es fokozatot is használhatnak. A köztes szinteken nagyobb áram is folyhat a bemenetre kapcsolt illesztő fokozat tranzisztorain. (Egy időben vezető P ill. N csatornás FET pl. az inverterben. Ld. C-MOS áramkörök felépítése). Az analóg módba állított lábak esetében a bemeneti feszültség teljes terjedelmében nem folyhat ilyen jellegű áram, mivel a digitális fokozatot lekapcsolják a bemenetről vagy letiltják. Nem csak az A/D -hez kapcsolódhat ilyen analóg mód, hanem a komparátor, erősítő, D/A egységekhez is. Attól, hogy egy kimenet analóg módba van állítva, még lehetséges kimenetnek használni. A TRISX regiszter megfelelő bitje engedélyezi a digitális meghajtót. Ha a TRISX megfelelő bitje 1, a kivezetés analóg, port bitet beolvasva 0 -t kapunk. Sajnos ilyenkor a LATX megfelelő bitjét olvasva is 0 -t kapunk.... Ha a TRISX megfelelő bitje 0, és a kivezetés analóg módban van, az analóg egységek a kimeneti logikai szintet kapják meg és ez a szint jelenik meg a lábon is, de port bitként beolvasva 0 -t kapunk.
Így már érthető, köszönöm!
![]()
Azt nem írtam lehetőségnek. Ahhoz új nyák kellene, azt meg már nem csinálok másikat. Át kellene tervezni az egészet.
Pali79: A cél egy visszacsatolás. 555-ös jelét szeretném számolni, amivel a program majd kezd valamit.
Akkor szerintem egy sima külső megszakítással. Én is hasonlót csináltam most. Egy régi 16F628A PORTB,0 megszakítással léptetek egy számlálót amit egy 2×16-os LCD-re írok ki.
Egy kontroller mellé mire kell 555-ös IC?
|
Bejelentkezés
Hirdetés |