pcint megszakitás
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
pcint megszakitás
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.
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.
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
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.dopplersax írta:Átirtam a portb.0=input-ra de igy sem megy!
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
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
Irtam egy másik progot Sir Leslie mintájára de igy sem megy!
Valamit nagyon nem érthetek!!!!
$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
Valamit nagyon nem érthetek!!!!
$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
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
Kód: Egész kijelölése
Pcmsk = &B00000001 'enable pcint0 (portb.0
Kód: Egész kijelölése
Pcmsk0 = &B00000001 'enable pcint0 (portb.0
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
chip-ben is próbáltad? (oda nem kell majd $sim, gondolom tudod)dopplersax írta: $sim
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.
- szepnorbee
- Bitmanipulátor
- Hozzászólások: 122
- Csatlakozott: 2009. augusztus 31. hétfő, 6:00
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
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
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
És így?
Kipróbáltam: szimulátorban megy - Interrupts fülön nyomj PCINT gombot.
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
A hozzászólást 2 alkalommal szerkesztették, utoljára SirLeslie 2011. február 5. szombat, 18:02-kor.
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00
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
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
- dopplersax
- Újonc
- Hozzászólások: 13
- Csatlakozott: 2009. augusztus 21. péntek, 6:00