Beispiele PWM aus Tutorial macht mir probleme

OP #1119188
Lesenswert?

Hallo Zusammen ,
ich habe wieder ein Problem ; ich versuche sei ein paar Tage rein in der 
AVR  Welt mit STK500 reinzukommen , aber irgendein Problem kommt mir 
immer in Weg. Jetzt habe ich das Beispile aus dem Tutorial .In der 
Simulation , kommt ich nicht weiter als der loop Scleife: anders gesagt 
das Programm springt nicht nach dem Überlauf zur Marke timer0_overflow.
Was soll ich villeicht da umstellen. vielen Dank im Voraus für alle 
Hinweise.
Das code in Anhang
Gast #1119210
Lesenswert?

Beim Simulator muss man insbesondere bei den Timern sehr vorsichtig 
sein. Da sind noch einige Fehler im Simulator.
Aber wenn du schon ein STK500 hast, braucst du ja nicht zu simulieren. 
Machs auf den AVR und teste da!!
OP #1119217
Lesenswert?

Danke für diese Hinweis,
ich habe eigentlich das Programm umgeänder , denn ich damit ein 
Schrittmotor  ansteuert wollte. Denks du ich könnte dieses Programm so 
auf dem AVR flashen ?

Danke .

.include "8515def.inc"

.def temp  = r16

.def PWMCount = r17

.def Schwelle_1 = r18
.def Schwelle_2 = r19
.def Schwelle_3 = r20
.def Schwelle_4 = r21
.org 0x0000

rjmp    main                  ; Reset Handler

.org OVF0addr
 rjmp    timer0_overflow       ; Timer Overflow Handler

main:

        ldi     temp, LOW(RAMEND)     ; Stackpointer initialisieren
        out     SPL, temp
        ldi     temp, HIGH(RAMEND)
        out     SPH, temp

        ldi     temp, 0xFF            ; Port B auf Ausgang
        out     DDRB, temp

        ldi     Schwelle_1, 1
        ldi     Schwelle_2, 2
        ldi     Schwelle_3, 3
    ldi     Schwelle_4, 4
        ldi     temp, 0b00000001      ; CS00 setzen: Teiler 1
        out     TCCR0, temp

        ldi     temp, 0b00000001      ; TOIE0: Interrupt bei Timer 
Overflow
        out     TIMSK, temp

        sei

loop:   rjmp    loop

timer0_overflow:                      ; Timer 0 Overflow Handler
        inc     PWMCount              ; den PWM Zähler von 0 bis
        cpi     PWMCount, 5         ; 3 zählen lassen
        brne    WorkPWM
        clr     PWMCount

WorkPWM:
        ldi     temp, 0b00001010

        cp      PWMCount, Schwelle_1
        brne    OneOn
        out     PORTB,temp


OneOn:  cp      PWMCount, Schwelle_2
        brne    TwoOn
    andi    temp,$F0
    ori     temp ,$05
        out     PORTB,temp


TwoOn:  cp      PWMCount, Schwelle_3
        brne    ThreeOn
    andi    temp,$F0
    ori     temp,$06
    out     PORTB,temp


ThreeOn:cp      PWMCount,schwelle_4
        brne    aus
    andi    temp,$F0
    ori     temp, $09
        out     PORTB,temp
    aus:
        reti

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren