-         

Ergebnis 1 bis 2 von 2

Thema: ATtiny2313 mit PWM mode 14 klappt nicht in der Simulation

  1. #1
    Neuer Benutzer
    Registriert seit
    23.09.2008
    Ort
    Bei Sulz am Neckar
    Alter
    52
    Beiträge
    1

    ATtiny2313 mit PWM mode 14 klappt nicht in der Simulation

    Anzeige

    AVR Studio 4.13.528
    GUI Version 4, 13, 0, 528
    AVR Simulator 1, 0, 2, 0
    ATTINY2313 208

    Möchte eine PWM in Mode 14 erzeugen und als Top IRC1=20000 nehmen.
    Obwohl nun nach Datenblatt OCR1A ein 16bit Register ist, kann der Wert
    0x05DC nicht geladen werden - es wir im Simulator 0x1DC draus. Was läuft falsch - der Simulator, das Datenblatt oder ich ?(

    Ein newbee

    #include "avr/io.h"
    #include "avr/interrupt.h"

    // Timer 1 overflow interrupt service routine
    ISR (TIMER1_OVF_vect)
    {
    PORTB |= 0x08;
    }

    int main(void)
    {

    PORTB=0x08;
    DDRB=0x08;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 31.250 kHz
    // Mode: Fast PWM top=ICR1
    // OC1A output: Changed Clear on OCR1A Set on Top; (Toggle)
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: On
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x82;
    TCCR1B=0x1A;
    ICR1=0x4E20;
    TCNT1=0x00;
    OCR1A=0x05DC;
    OCR1B=0x03FF; // nicht benutzt

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x80;

    // Global enable interrupts
    sei();

    while (1)
    {
    // Place your code here


    };
    }

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    du hast ein (bekanntes) Problem im Simulator gefunden. Dazu steht im Helpfile des AVRStudio v 4.14: Shadow register support is missing in AVR Studio. As a consequence when operating PWM in fast- and phase correct mode, the OCR register should not be updated until TCNT is at TOP. Das steht auch hier (unter "Simulator").

    Du kannst das Problem umgehen, indem Du die Compare-Regs initialisiert, bevor Du den Timer startest (das ist sowieso immer eine gute Idee, wenn es denn machbar ist!), also so:
    <pre>OCR1A=0x05DC;
    OCR1B=0x03FF; // nicht benutzt
    TCCR1A=0x82;
    TCCR1B=0x1A;
    // usw. </pre>
    Den Rest Deiner Initialisierung habe ich mir übrigens nicht angesehen.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

Berechtigungen

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