pcint megszakitás

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

pcint megszakitás

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 12:15

Sziasztok kezdő avr-es vagyok.
Elakadtam a pcint megszakitásoknál elég erősen.
Bascom demo ver.-ben probálkozom de nem megy.
Miért?
$regfile = "attiny2313.dat"
$crystal = 8000000
$sim


Dim Megsz As Bit

Config Portb.0 = Output
Config Portd.0 = Output


Set Gimsk.pcie
Set Pcmsk.pcint0

On Pcint0 Tik
Enable Interrupts
Enable Pcint0


Do
If Gosend = 1 Then
Toggle Portd.0
Reset Megsz
End If
Loop
End

Tik:
Lcd "ok"
Megsz = 1
Return



Ez lenne a progi.
Forditáskor azt irja hogy unknown interrupt.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3346
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2011. február 5. szombat, 13:24

Mondjuk megszakítást bemeneten, lehet kérni!
PB0: (AIN0/PCINT0)
Te meg kimenetre állítódtad a: Set Pcmsk.pcint0 = Config Portb.0 = Output
:roll:

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 14:25

Átirtam a portb.0=input-ra de igy sem megy!

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

HozzászólásSzerző: SirLeslie » 2011. február 5. szombat, 15:10

dopplersax írta:Átirtam a portb.0=input-ra de igy sem megy!


Meg kell adni azt is, hogy melyik lábon/lábakon szeretnéd bekapcsolni a pcint figyelést - itt egy minta, nézd meg a chip adatlapjában, hogy neked pontosan melyik kell - és ne feledd, hogy mindkét szintváltozáskor lefut majd a megszakítási rutinod.

Kód: Egész kijelölése

Config Portb = Input
Portb = &HF                                                 'activate pull up

Enable Interrupts                                           'enable global ints
Enable Pcint0                                               'we enable pcint0 as this has pcint0-pcint7
On Pcint0 Isr_pcint0                                        'we jump to this label when one of the pins is changed

Pcmsk0 = &B00001111                                         'enable pcint0-pcint3  (portb.0-portb.3)

Isr_pcint0:
' pcint rutin
return

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 16:31

Irtam egy másik progot Sir Leslie mintájára de igy sem megy!
Valamit nagyon nem érthetek!!!! :oops:
$regfile = "attiny2313.dat"
$crystal = 8000000
$sim

Config Portd.0 = Output
Config Portb.0 = Input
Portb = &B00000001 'activate pull up

Enable Interrupts 'enable global ints
Enable Pcint0 'we enable pcint0
On Pcint0 Isr_pcint0 'we jump to this label
Pcmsk = &B00000001 'enable pcint0 (portb.0

Do
Toggle Portd.0
Wait 1
Loop
End

Isr_pcint0:
Lcd "ok"
return

Avatar
szepnorbee
Bitmanipulátor
Hozzászólások: 122
Csatlakozott: 2009. augusztus 31. hétfő, 6:00

HozzászólásSzerző: szepnorbee » 2011. február 5. szombat, 17:05

Kód: Egész kijelölése

Pcmsk = &B00000001 'enable pcint0 (portb.0


itt nem kell a nulla?

Kód: Egész kijelölése

Pcmsk0 = &B00000001 'enable pcint0 (portb.0


Csak tipp

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 17:09

doksi szerint nem. az csak pcmsk

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

HozzászólásSzerző: SirLeslie » 2011. február 5. szombat, 17:10

dopplersax írta:$sim


chip-ben is próbáltad? (oda nem kell majd $sim, gondolom tudod)
lcd helyett inkább egy ledet javaslok pcint vizsgálatra (hamarabb, biztosabban "végrehajtódik" (nem beszélhet bele az esetleges lcd kijelzésbe))
off: én szinte mindent ott tesztelek, sohasem tudhatom, hogy biztosan lekezel mindent korrektül.
on.

Avatar
szepnorbee
Bitmanipulátor
Hozzászólások: 122
Csatlakozott: 2009. augusztus 31. hétfő, 6:00

HozzászólásSzerző: szepnorbee » 2011. február 5. szombat, 17:13

Tényleg. lehet a bascom settings-ben vmelyik LCD verérlő láb pont a pcint-et foglalja.

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 17:19

Nem sajnos azt már megnéztem.
Töröltem a pcint0 bol a 0-át tehát pcint lett igy leforditja és megy simul.-on.
Érdekes!
$regfile = "attiny2313.dat"
$crystal = 8000000
$sim

Config Portd.0 = Output 'GIMSK.PCIE,EIFR.PCIF
Config Portb.0 = Input
Portb = &B00000001 'activate pull up
Enable Interrupts 'enable global ints
Enable Pcint 'we enable pcint0 as this has pcint0-pcint7
On Pcint Isr_pcint0 'we jump to this label when one of the pins is changed
Pcmsk = &B00000001 'enable pcint0-pcint3 (portb.0-portb.3)

Do

Toggle Portd.0
Wait 1
Loop
End

Isr_pcint0:
Print "ok"
Return

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

HozzászólásSzerző: SirLeslie » 2011. február 5. szombat, 17:24

És így?

Kód: Egész kijelölése

$regfile = "attiny2313.dat"
$crystal = 8000000
$sim

Config Portd.0 = Output                                     'GIMSK.PCIE,EIFR.PCIF
Config Portb.0 = Input
Portb = &B00000001                                          'activate pull up
Enable Interrupts                                           'enable global ints
Enable Pcint                                                'we enable pcint0 as this has pcint0-pcint7
On Pcint Isr_pcint0                                         'we jump to this label when one of the pins is changed
Gimsk.5 = 1
Pcmsk = &B00000001                                          'enable pcint0-pcint3  (portb.0-portb.3)

Do

Toggle Portd.0
Wait 1
Loop
End

Isr_pcint0:
Print "ok"
Return


Kipróbáltam: szimulátorban megy - Interrupts fülön nyomj PCINT gombot.
A hozzászólást 2 alkalommal szerkesztették, utoljára SirLeslie 2011. február 5. szombat, 18:02-kor.

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 17:34

igy sem jó mert ha a pcint után teszek egy 0-át mert elvileg ugy kellene akkor már nem forditja le a prog. Különben már ezt is probáltam.
error:unknown interrupt source(pcint0).

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3346
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

HozzászólásSzerző: kapu48 » 2011. február 5. szombat, 19:52

Igy elég:
Enable Pcint 'we enable pcint0
On Pcint Isr_pcint0 'we jump to this label

Mert ezek 7-0 csak 1 közös intet generálnak. És Itt állítod be melyik éljen: Pcmsk = &B00000001 'enable pcint0 (portb.0 )
Ha többet is engedélyezel akkor a megszakításban kel lekérdezni honnan jött az INT.
És minden változásra kapsz megszakítást!
Isr_pcint0:
Pinb0= Portb.0
Print Pinb0 ’ 0 /1?
Print "ok"
Return

Avatar
dopplersax
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2009. augusztus 21. péntek, 6:00

HozzászólásSzerző: dopplersax » 2011. február 5. szombat, 21:48

Köszönöm a segítséget mindenkinek igy már érthető. :lol:
Kapu48 te ezt hogy bogarásztad ki? Elismerésem!

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

HozzászólásSzerző: SirLeslie » 2011. február 5. szombat, 22:11

dopplersax írta:Köszönöm a segítséget mindenkinek igy már érthető. :lol:
Kapu48 te ezt hogy bogarásztad ki? Elismerésem!


Benne van az adatlapjában ;-) keress rá a "pcint" szóra.


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég