bin gerade seit gefühlten Jahrzehnten mal wieder kurz am Fastavr
rumfummeln für eine kleine Sache, die (eigentlich) schnell erledigt sein
sollte und auch schon beim Start des Timer0 hängengeblieben. Nach
Durchsicht des generierten Assember-textes habe ich es dann zu Fuß im
Fastavr-Code berichtigt.
1 | ;-Line--0015----Enable Ovf0--
|
2 | in zl,TIMSK
|
3 | sbr zl,0x02 <-- hier: voll falsch, mus 0x01 sein
|
4 | out TIMSK,zl
|
Anstatt des Bit0 zu setzen, wird fälschlicherweise Bit1 gesetzt.
Mit der Direktive $ASM und $ENDASM lässt sich der ASM-Code direkt in den
Basic-Quelltext eintragen und so die Peinlichkeit "umschiffen" ;)=
1 | '/////////////////////////////////////////////////////////
|
2 | '/// FastAVR Basic Compiler for AVR by MICRODESIGN ///
|
3 | '/// Name of Your project
|
4 | '/////////////////////////////////////////////////////////
|
5 | $Device= m128 ' used device
|
6 | $Stack = 32 ' stack depth
|
7 | $Clock = 7.3728 ' adjust for used crystal
|
8 | $Baud = 9600
|
9 | $Timer0= Timer, Prescale=1024
|
10 | Dim inputcounter As Byte, taste_ext As Byte
|
11 | Declare Interrupt Int1()
|
12 | Declare Interrupt Ovf0()
|
13 | Int1 Falling
|
14 | DDRG= 16
|
15 |
|
16 | Enable Int1
|
17 | 'Enable Ovf0 --> sbr zl, 0x02 ist ja wohl falsch!!
|
18 | ';----Enable Ovf0--
|
19 | $Asm
|
20 | in zl,TIMSK
|
21 | sbr zl,0x01
|
22 | out TIMSK,zl
|
23 | $EndAsm
|
24 | Start Timer0
|
25 | Enable Interrupts
|
26 | PrintBin(12)
|
27 | Print ("RESET")
|
28 |
|
29 | Do ' place your code in next line
|
30 | ..>schnippschnapp<..
|
31 | Loop
|
Ich weiß, das kaum jemand mit Fastavr spielt. Aber evtl. kann es der
eine oder ander ja doch brauchen. Hier im Forum kommt ja nichts weg und
über google ist es auch zu finden.
Grüße Axelr.