Hallo H3llGhost
Mit Assembler kenn ich mich noch gar nicht aus, deshalb fand ich die letzte Version deines Codes noch weniger verwirrend als diese Version jetzt. Könntest du mal nur den Teil des Codes posten, der die Motoren jeweils mit einem festen PWM-Wert laufen läßt. Möglichst links und rechts verschieden.
Was mir bei der letzten Version aufgefallen war:
Code:
interrupt: ;LEDs toggeln
inc r20 ;Timererweiterung inkrementieren
brne interrupt2 ;wenn r20=0, zu interrupt2 springen
ldi r20,HIGH(TIME2) ;sonst Starwert Timer neu setzen
cbi PORTD, PD5
cbi PORTB, PB5
inc temp
out OCR1AH, temp ; für den linken Motor
out OCR1AL, temp ; für den linken Motor
out OCR1BH, temp ; und für den rechten Motor
out OCR1BL, temp ; und für den rechten Motor
sbi PORTD, PD5
sbi PORTB, PB5
interrupt2:
ldi r16,LOW(TIME2) ;Startwert Timer neu
out TCNT0,r16
reti
temp(r16) wurde nicht initialisiert, es hat noch diesen Wert:
;Stackpointer setzen wg. Unterprogramm
ldi r16,HIGH(RAMEND)
out SPH,r16
ldi r16,LOW(RAMEND)
out SPL,r16
und bei Interrupt2 wird wieder r16 verwendet, dass kann doch nicht stimmen, oder? Vielleicht sollte oben ein anderes temp definiert werden:
.def temp = r16
btw springt brne wenn r20 nicht 0 ist zu interrupt2 (lowbyte neu laden), aber da stimmt nur der Kommentar nicht.
Gruß
mic
Lesezeichen