- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 12

Thema: PWM mit Timer1 Atmega8 in Assembler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61

    PWM mit Timer1 Atmega8 in Assembler

    Hallo Atmelfreaks,
    beschäftige mich mit der Wahnsinnsmaterie PWM mit Timer1
    Zu Beginn hatte ich mich mit CTC-Betrieb beschäftigt und es läuft auch.
    Jetzt bin ich beim PWM-fast Betrieb und PWM Phasenkorrekt Betrieb angekommen,
    und es ist ein Wahnsinn, was sich dahinter verbirgt.
    Fakt ist, dieser Code zeigt nichts an den LEDs die an PB1 und PB2 gegen GND hängen.
    Bei CTC lief alles.
    Wo ist nur mein Gedankenfehler?

    ; Projekt: Mega8-PWM Datum: 03.11.2013

    ; Datei: mega8-FASTPWM01.asm

    ; ATmega8 Timer1 FastPWM-Betrieb Kanäle A und B

    ; Port B: Ausgang Kanal A:OC1A (PB1-Pin15) Kanal B:OC1B (PB2-Pin16)

    ; Konfiguration: interner Oszillator 1 MHz, externes RESET-Signal
    .INCLUDE "m8def.inc" ; Deklarationen für Mega8
    .EQU takt = 1000000 ; Systemtakt 1 MHz intern

    .DEF akku = r16
    .DEF temp17 = r17
    .CSEG ; Programm-Flash
    rjmp start ; Reset-Einsprung
    .ORG $13 ; Interrupt-Einsprünge übergehen

    start:
    ldi akku,LOW(RAMEND); Stapel anlegen
    out SPL,akku ;
    ldi akku,HIGH(RAMEND)
    out SPH,akku

    ldi akku,(1<<PB1) | (1<<PB2)
    out DDRB,akku

    .equ WertH = 100 ; Konstante für OCR1AH u. OCR1BH (r16)
    .equ WertL = 70 ; Konstante für OCR1AL u. OCR1BL (r17)


    ; Timer1 programmieren: WGM10=1<<<PWM8Bit phasenrichtig (TOPP=00FF)

    ; KanalA (COM1Ax) zu PB1 und KanalB (COM1Bx) zu PB2 nicht invertiert
    ldi akku,(0<<COM1A1) |(1<<COM1A0)| (0<<COM1B1) | (0<<COM1B0)| (0<<WGM11) | (1<<WGM10)
    out TCCR1A,akku ; Steuerregister A Timer1

    clr akku
    ldi akku,(0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10)
    out TCCR1B,akku ; Steuerregister B Timer1 Prescale = 1 (1MHz)


    loop: ldi akku,WertH ; r16 auf 100
    ldi temp17,WertL ; r17 auf 70

    out OCR1AH,akku ; Kanal A = 100 (WertH)
    out OCR1AL,temp17 ; Kanal A = 70 (WertL)

    out OCR1BH,akku ; Kanal B = 100 (WertH)
    out OCR1BL,temp17 ; Kanal B = 70 (WertL


    rjmp loop
    .EXIT


    Grüße

    Rolf
    Geändert von hegewald (06.11.2013 um 12:32 Uhr)

Ähnliche Themen

  1. 2x PWM mit Timer1 auf ATmega48
    Von Jacob2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 12.05.2011, 18:15
  2. PWM mit ATMEGA644p mit timer0, timer1 und timer2
    Von lebratmaxe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 29.07.2010, 19:42
  3. Erzeugung von Rampen mit Timer1(ATmega8)
    Von Viktor im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 21.11.2008, 18:27
  4. Servosteuerung mit PWM von Timer1
    Von Hendrix85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.12.2007, 18:08
  5. Fast PWM mit Timer1
    Von tschensen im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 01.05.2006, 21:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress