- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 11

Thema: ATmega168A: Software PWM Periodendauer verändert sich, woran kann das liegen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Code Box geht mit [code]
    und dann eben mit [/] auch code abschliessen.

  2. #2
    Dracyria
    Gast
    Nun dann hier einmal mein Hauptprogramm.

    [code]void main(void)
    {
    //Variablendefinition ohne Vorzeichen
    uint16_t result1;
    uint16_t result2;
    uint16_t result3;
    uint16_t result4;
    uint16_t result5;
    uint16_t result6;
    uint16_t j;

    DDRB=0xff; // alle B-Pins als Ausgänge definiert
    DDRC=0b11110000; // Bit 0 und 1 in Port C Eingänge da ADC[1:0]
    DDRD=0b11111000; //Alle D-Pins als Ausgänge definiert



    //Endlosschleife
    while(1)
    {
    PORTD=0b00000111;
    //alle ADC Eingänge der Reihe nach wandeln
    result1=readADC(1); //Poti3
    result2=readADC(0); //Poti2
    result3=readADC(7); //Poti1

    //Hardware PWM für J34 bis J38
    if(result3>10)
    {
    TCCR1A |=(1<<COM1A1)|(1<<WGM10)|(1<<WGM12); // 8-Bit Fast-PWM <-dito
    TCCR1B |=(1<<CS10)/*| (1<<CS11)*/; //kein Prescaling
    OCR1A = (result3/4);
    }
    if(result3<=10)
    {
    TCCR1A = (0<<COM1A1);
    }

    //Hardware PWM für J49 bis J53
    if (result1>10)
    {
    TCCR0A|=(1<<COM0A1)|(1<<WGM00)|(1<<WGM01); // 8-Bit Fast-PWM
    TCCR0B|=(1<<CS00);//Kein Prescaling
    OCR0A = (result1/4); // result2/4 da 8 Bit
    }
    if (result1<=10)
    {
    TCCR0A = (0<<COM0A1);
    }


    //Software PWM für J39 bis J48
    if (result2>10)
    {
    // 512 Stufen da Frequenz damit höher und kein Sprung in der Helligkeit zu sehen
    for (j=0; j<511; j++)
    {
    if (j<result2/2)
    {
    PORTB |= (1<<PINB0);
    PORTD |= (1<<PIND7);
    }
    if (j>=result2/2)
    {
    PORTD &= ~(PORTD);
    PORTB &= ~(PORTB);
    }
    }
    }
    if (result2<=10)
    {
    PORTD &= ~(PORTD);
    PORTB &= ~(PORTB);
    }
    }
    }[\code]

  3. #3
    Unregistriert
    Gast

    Unglücklich

    Ohh peinlich...nun steht der Code da ohne schicke Box...sorry! >.<
    Nunja ich hoffe ihr könnt darin trotzdem schon was sehen, das solch ein Verhalten eventuell auslösen könnte.

Ähnliche Themen

  1. Problem mit ATMega168A und PWM
    Von TechMo im Forum Assembler-Programmierung
    Antworten: 6
    Letzter Beitrag: 19.09.2012, 07:10
  2. Kann sich ein Programm verlangsamen?
    Von Duesentrieb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 04.11.2011, 16:22
  3. Wie berechne ich Frequenz/Periodendauer meines PWM?
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 12.07.2007, 15:03
  4. Antworten: 9
    Letzter Beitrag: 11.02.2006, 01:50
  5. Periodendauer beim Servo
    Von .Johannes. im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 28.02.2005, 10:49

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

LiFePO4 Speicher Test