-
-
So richtig kann ich es nicht glauben, darum noch ein Versuch:
Weil es auch sein kann, daß mit meiner Installation des AVR-Studios etwas nicht in Ordnung ist, poste ich mal hier den Testcode. Vielleicht hat ja jemand Lust das im Simulator laufen zu lassen. Das mit dem Swap-Befehl ist natürlich nur provisorisch ... war der schnellste Weg ein Portbit zu schalten 
Würde mich freuen wenn es bei jemand funktioniert und ich eventuell nur
ein neuere Version des AVR-Studio benötige.
Habe folgendes nachträglich aus dem Code-Tag genommen, weil ich da die Formatierung nicht hinbekomme 
;++++++++++++++++++++++++++++++++++++ Timer0 Overflow - Simulatortest
.include "tn15def.inc"
.list
.def temp = r16
.def aus = r17
.cseg
rjmp Init ;0 Reset
reti ;rjmp INT0int ;1 External Interrupt0
reti ;rjmp PINCint ;2 Pin Change Interrupt
reti ;rjmp T1CPint ;3 Timer1 Compare Interrupt
reti ;rjmp T1OVint ;4 Timer1 Overflow Interrupt
rjmp T0OVint ;5 Timer0 Overflow Interrupt
reti ;rjmp EERDYint ;6 EEPROM Ready Interrupt
reti ;rjmp ACPint ;7 Analog Comparator Interrupt
reti ;rjmp ADCint ;8 AD Converter Interrupt
Init:
ldi temp, (1<<CS02)|(1<<CS00) ; CK/1024
out TCCR0, temp
ldi temp, (1<<TOIE0)
out TIMSK, temp
ldi temp, 255
out DDRB, temp
ldi aus, 0b00010000
sei
Warte:
rjmp Warte
T0OVint:
swap aus
out PORTB, aus
reti
Will das Codefragment nicht unkommentiert stehen lassen und poste es darum nocheinmal für den Timer1 des ATtiny15, mit etwas Kommentar.
Daß mir Kritik und Tips willkommen sind, ist klar. Am meisten bewegt mich die Frage, wie man exaktes Timing mit doch eher geringen Mathekenntnissen bewältigt - welche Formel muß ich auf meinem PC (in VB5) laufen lassen?
;********************************* Timer1 OV-INT als Wechselschalter.
.include "tn15def.inc"
.list
.def temp = r16
.def aus = r17
.def xtint = r18 ;Reg wird heruntergezählt (xt) und bei 0 der Port
.equ xt = 6 ;nach so vielen (xt) Timer0-Überläufen bedient
;6 OV-Ints ergeben bei 1.6 MHz und CK/1024 eine (knappe)
;Sekunde nach der Pin2 und Pin 5 im Wechsel on sind..
.cseg
rjmp Init ;0 Reset
reti ;rjmp INT0int ;1 External Interrupt0
reti ;rjmp PINCint ;2 Pin Change Interrupt
reti ;rjmp T1CPint ;3 Timer1 Compare Interrupt
rjmp T1OVint ;4 Timer1 Overflow Interrupt
reti ;rjmp T0OVint ;5 Timer0 Overflow Interrupt
reti ;rjmp EERDYint ;6 EEPROM Ready Interrupt
reti ;rjmp ACPint ;7 Analog Comparator Interrupt
reti ;rjmp ADCint ;8 AD Converter Interrupt
Init:
ldi temp, 0b00001111 ;CK/1024
out TCCR1, temp
ldi temp, (1<<TOIE1)
out TIMSK, temp
ldi temp, 255
out DDRB, temp
ldi aus, 0b00010000 ;PB4/Pin2 an >>swap<< PB0/Pin5 an
ldi xtint, xt
ldi temp, 0
sei
Warte:
rjmp Warte
T1OVint:
dec xtint
cpse xtint, temp
reti
swap aus
out PORTB, aus
ldi xtint, xt
reti
Viele sind sicher schon in Gedanken beim RoboCup 2006. Habe erst gestern davon erfahren. Das Tolle:Es findet hier in Bremen statt. Vom 14 bis zum 18. Juni! Find ich gut 
Herzliche Grüße!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen