.include "tn26def.inc" ;Datenrichtung "1"= DO, "0"= DI ldi r16, 0b00000111 out ddrA, r16 ldi r16, 0b11111111 out ddrB, r16 ;Timer Init ldi r16, 0b11110011 out TCCR1A, r16 ldi r16, 0b00000001 out TCCR1B, r16 ldi r16, 0b11111111 out OCR1C, r16 ;Brücke einschalten cbi portA, 0 sbi portA, 1 loop: ;Strombegrenzung ;Referenzspannung Messen ;ADC Init ldi r16, 0b01100110 ;AVCC ist Referenzspannung, Wert links bündig out ADMUX, r16 ldi r16, 0b11000111 out ADCSRA, r16 ;Messwert einlesen in r18, ADCL in r18, ADCH ;Strom messen ;ADC Init ldi r16, 0b10100010 ;Interne Referenzspannung 2,56V, Wert links bündig out ADMUX, r16 ldi r16, 0b11000111 out ADCSRA, r16 ;Messwert einlesen in r19, ADCL in r19, ADCH ;Angleichen cp r19, r18 breq eqA ;Wenn ausgeregelt überspringe regelvorgang cp r19, r18 ;Vergleiche Sollwert (R18) mit Strom Phase1 (r19) brlo A_lo ;ist der Phasenstrom kleiner dann springe dec r21 A_lo: cp r19, r18 ;Vergleiche Sollwert (R18) mit Strom Phase1 (r19) brsh A_sh ;ist der Phasenstrom größer dann springe inc r21 A_sh: eqA: ;Pulsweite festlegen A out OCR1A, r21 rjmp loop