Fórum témák

» Több friss téma
Cikkek » Nulláról a robotokig - PIC Mikrovezérlők III rész
Nulláról a robotokig - PIC Mikrovezérlők III rész
Szerző: Topi, idő: Júl 13, 2007, Olvasva: 51473, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   3 / 19

PIC16F877-esetében az ebben a cikkben szereplő megszakításokat két regiszterrel tudjuk vezérelni, ezért ennek a két regiszternek a behatóbb vizsgálata elengedhetetlen. Először is az:

INTCON regiszter

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

GIE

PEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

7. bit             0. bit

GIE: Global Interrupt Enable bit
1 = Minden beállított megszakítás engedélyezve
0 = Minden megszakítás tiltása

PEIE: Peripheral Interrupt Enable bit
1 = Minden beállított belső perifériás megszakítás engedélyezése (EEPROM, USART, ...)
0 = Minden perifériás megszakítás tiltása

T0IE: TMR0 Overflow Interrupt Enable bit (Timer0 túlcsordulás megszakítás)
1 = Timer0 megszakítás engedélyezve
0 = Letiltva

INTE: RB0/INT External Interrupt Enable bit
1 = Engedélyezve az RB0/INT megszakítás
0 = Letiltva

RBIE: RB Port Change Interrupt Enable bit
1 = Minden PORTB7:4-en esett változásnál megszakítás engedélyezve
0 = Letiltva

T0IF: TMR0 Overflow Interrupt Flag bit
1 = Timer0 túlcsordult
0 = Timer0 még nem jelzett túlcsordulást (még nem járt le az idő)

INTF: RB0/INT External Interrupt Flag bit
1 = RB0/INT lábon változás történt
0 = Nem történt még változás

RBIF: RB Port Change Interrupt Flag bit
1 = Legalább egy PORTB7:4 megváltozott
0 = Nem történt még változás

Az összes E-re végződő az Engedélyező bit, az összes F-re végződő pedig jelző bit. Onnan tudod megjegyezni az F-et, hogy Flag, mint zászló... Jelez valamit.

Tudni kell továbbá, hogy akkor hívja meg a PIC a megszakítást, ha a Flag bit 1-es. Tehát ha a megszakításban ezt nem törlöd, akkor mindig meg fog hívódni, még akkor is, ha amúgy nem kellene.

Több megszakítás együttes kezelésénél is ez fogja eldönteni, hogy ki miatt tévedt a program a megszakítás "lapra".

OPTION_REG regiszter

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

RBPU

INTEDG

T0CS

T0SE

PSA

PS2

PS1

RBIF

7. bit             0. bit

Ez a második legfontosabb regiszter. Ezzel állíthatjuk be az időzítőket, a WDT-t, RB0/INT fel/lefutó élre való megszakítását és a felhúzó ellenállásokat.

RBPU: PORTB Pull-Up Enable bit
1 = Mivel invertált, ezért ebben az esetben tiltott
0 = Be van kapcsolva a felhúzó ellenállás

INTEDG: Interrupt Edge Select bit
1 = Felfutó élre indul (0-áról 1 lesz)
0 = Lefutó élre indul (1-ről 0 lesz)

T0CS: TMR0 Clock Source Select bit
1 = Külső RA4/T0CKI lábon keresztül kapja az órajelet
0 = Belső, PIC-et hajtó órajelet használja

T0SE: TMR0 Source Edge Select bit
1 = Lefutó élre növeli a timer0-t
0 = Felfutó élre növeli a timer0-t

PSA: Prescaler Assignment bit
1 = Előosztó WDT-hez beállítva
0 = Előosztó Timer0-hoz beállítva

PS2 : PS0: Prescaler Rate Select bits (Előosztás kiválasztó bitek, mennyivel osztják a fő órajelet)

Bitek értéke

TMR0 osztása

WDT osztása

000

1 : 2 1 : 1

001

1 : 4 1 : 2

010

1 : 8 1 : 4

011

1 : 16 1 : 8

100

1 : 32 1 : 16

101

1 : 64 1 : 32

110

1 : 128 1 : 64

111

1 : 256 1 : 128

Röviden ezeket érdemes az elméletben tudni, nézzük az első megszakításunkat... Lapozz!


A cikk még nem ért véget, lapozz!
Következő: »»   3 / 19
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem