Hey hey,

ik heb een probleem met een tiny13, ik heb de volgende code:
(alleen relevante code)


$regfile = "attiny13.dat"                                   ' tiny 13
$crystal = 1200000                                          'standaart op 9,6 mhz met clkdiv po 8 = 1,2Mhz
$hwstack = 32                                               ' hw
$swstack = 16                                               'sw stack
$framesize = 40                                             'frame suze

Pcmsk = &B00000111                                          'enable PCINT0-2

Config Timer0 = Timer , Prescale = 8                        '1,7mS interrupt
On Ovf0 Tim0_isr                                            'bij timer overflow ga naar tim0_isr
On Pcint0 Isr_pcint0
Enable Pcint0
Enable Timer0                                               ' zet timer0 aan


Enable Interrupts                                           ' set interrupts aan (sreg.7 1

do
nop
loop

Isr_pcint0:
   If Pinb.0 <> Out1.0 Then C1 = Wachttijd
   If Pinb.1 <> Out1.1 Then C2 = Wachttijd
   If Pinb.2 <> Out1.2 Then C3 = Wachttijd
      Prev.0 = Pinb.0
      Prev.1 = Pinb.1
      Prev.2 = Pinb.2
Return

Tim0_isr:
   If C1 <> 0 Then
      Decr C1
      Out1.3 = 1
   End If
   If C2 <> 0 Then
      Decr C2
      Out1.4 = 1
   End If
   If C3 <> 0 Then
      Decr C3
      Out1.5 = 1
   End If
Return

Het probleem wat ik heb is dat als ik hem simuleer dat mijn timer netjes overflowd en werkt. Maar als ik een ingang hoog maak hij niet triggerd. Dit gebeurt alleen in de simulator.

Ik heb echter geen tiny13 bij de hand om deze code in praktijk te testen. Kan iemand mij vertellen of ik de boel zo wel goed heb ingesteld?

De tiny13 beschikt niet over sram, maar alleen over registers. Hierdoor moet je stack en framesize kleiner maken anders past het niet en geeft Bascom een compiler error (bij versie 1.11.93 in iedergeval).
$hwstack = 32
$swstack = 8
$framesize = 16
Je moet je ingangen nog configuren als ingang en eventueel de pull-up aanzetten.
Config Pinb.0 = input 'Port als ingang
Set Portb.0 'Pull up aan
De pin change interrupt kun je alleen testen door in de simulator op de PCINT0 knop te drukken, alleen een pin toggellen werkt niet in de simulator.
En die tiny13 moet je niet meer gebruiken, gewoon lekker een 45 of 48 nemen. Zit wel S-ram en heb je genoeg ruimte je registers te pushen bij een ISR en wat subroutines te maken.

De ATtiny13 heeft wel degelijk 64 bytes SRAM. Wellicht verwar je die met de ATtiny12

Op 7 mei 2009 00:30:46 schreef 2N3055:
De pin change interrupt kun je alleen testen door in de simulator op de PCINT0 knop te drukken, alleen een pin toggellen werkt niet in de simulator.

Kijk dat moest ik even weten. De keuze voor de tiny13 is niet door mij gedaan. ik hoef alleen het programma te maken voor een specifieke chip.

En die ingangen als input configureren moet ik inderdaad nog doen.

Op 7 mei 2009 00:43:47 schreef Marcel:
De ATtiny13 heeft wel degelijk 64 bytes SRAM. Wellicht verwar je die met de ATtiny12

Yep, klopt mijn fout. |:-(