UPDATE:
So, ihr seht es ist schon spät und ich bin auch schon einen verfusten Controller weiter... *grml*
Naja, muss ich schnell nen taktgenerator aufbaun...
Egal, zurück zum Thema
getestet:
-externe stromversorgung für Servos => gleiches ergebnis (verbundene massen etc...)
-anderer chip => gleiches ergebnis
-programm umschreiben, jetzt nurnoch led's blinken lassen im 4,...s rhytmus von timer0 wie oben
funktioniert irgendwie auch nicht -.- (code dafür siehe unten)
-Fuses umkehren, man weiß ja nie wenn man n anderes Programm hernimmt... => atmega32 verfust...
fuses für die clock stehen momentan so:
*ckopt = 1
*sut1 = 0
*sut0 = 1
*cksel3 = 1
*cksel2 = 1
*cksel1 = 1
*cksel0 = 0
wäre laut datenblatt dann "Ceramic resonator, slowly
rising power"
sollte doch passen oder nicht?
naja, was ich nich versteh is, warum es zu schnell blinkt/fährt
selbst wenn der statt den 16 MHz dann den internen takt von 1/4/8 MHz nehmen würde, das würde das ganze doch nur verlangsamen
also die LED's würden dann alle 8sec blinken...
komisch echt
Code:
.include "m32def.inc"
.def tmp = R16 ; Allzweckregister
.def counter2 = R18 ; Counter für Timer-0-Zyklen
.org 0x000
rjmp Main
.org OVF0addr ; Overflow0 Interrupt Vector Address
rjmp OVF0_interrupt
.org INT_VECTORS_SIZE
OVF0_interrupt:
inc counter2
cpi counter2, 255
brne end
in tmp, PORTD
com tmp
out PORTD, tmp
end: reti
Main: ; hier beginnt das Hauptprogramm
ldi tmp, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse
out SPH, tmp
ldi tmp, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
out SPL, tmp
;/*Timer 0:
ldi tmp, ( 1 << CS02 ) | ( 1 << CS00 ) ; Prescaler auf 1024
out TCCR0, tmp
;=> 61.4 Overflows in der Sekunde (bei 16 MHz)
;=> alle 16,4 ms
ldi tmp, TIMSK
ori tmp, ( 1 << TOIE0 ) ; TOIE0: Interrupt bei Timer Overflow
out TIMSK, tmp
;*/ ;Timer 0
ldi tmp, 0xFF
out DDRD, tmp
ldi tmp, 0x55
out PORTD, tmp
ldi counter2, 0x00
sei
loop:
rjmp loop
LG Roland
Lesezeichen