Hallo,
in den letzten drei Stunden habe ich mich mit diesem Problem auseinandergesetzt. Ist das ein Bug oder soll das so?
Wenn ich Generate_bug auf 1 setze, dann habe ich an Pin E2 eine Frequenz von 678 Hz. Wenn ich generate_bug auf 0 setze, dann habe ich eine Frequenz von 84.7 Hz (so wie ich es erwarten würde). Ein start / stopp TCD0 setzt also den Prescaler auf 1 zurück. Hätte ich jetzt nicht erwartet?
Alles anzeigen
in den letzten drei Stunden habe ich mich mit diesem Problem auseinandergesetzt. Ist das ein Bug oder soll das so?
Wenn ich Generate_bug auf 1 setze, dann habe ich an Pin E2 eine Frequenz von 678 Hz. Wenn ich generate_bug auf 0 setze, dann habe ich eine Frequenz von 84.7 Hz (so wie ich es erwarten würde). Ein start / stopp TCD0 setzt also den Prescaler auf 1 zurück. Hätte ich jetzt nicht erwartet?
Quellcode
- $regfile = "xm16A4def.dat"
- $crystal = 32000000
- $hwstack = 512
- $swstack = 512
- $framesize = 512
- $lib "xmega.lib"
- Config Osc = Disabled , 32mhzosc = Enabled
- Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
- Config Tcd0 = Normal , Prescale = 8
- Tcd0_per = 24000
- On Tcd0_ovf Tcd0_isr
- Enable Tcd0_ovf , lo
- Config Priority = Static , Vector = Application , Lo = Enabled , med = enabled 'Enable Lo Level Interrupts
- Enable Interrupts
- Config Porte.2 = Output
- dim generate_bug as bit
- Generate_bug = 1
- if generate_bug = 1 then
- stop tcd0
- start tcd0
- end if
- Do
- nop
- Loop
- End
- Tcd0_isr:
- toggle Porte.2
- return