- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: LED-Fading Attiny45

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.03.2014
    Beiträge
    15

    LED-Fading Attiny45

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich möchte mit dem Attiny eine LED heller und dunkler werden lassen. Aber sie bleibt bei mir ganz dunkel

    Code:
    #define F_CPU 8000000UL
    #include <avr/interrupt.h>
    #include <avr/io.h>
    #include <util/delay.h>
    
    uint8_t i;
    
    int main(void) {
      i = 0;
      DDRB |= (1<<PB0);			 
      PORTB &= ~(1<<PB0);		
      DDRB |= (1 << PB1);		
      PORTB &= ~(1<<PB1);		
    
      TCCR0A |= 1<<COM0A1 | 1<<WGM01 | 1<<WGM00;	
      TCCR0B |= 1<<WGM02 | 1<<CS02 | 1<<CS00;
      OCR0A = 256-1; 	
      OCR0B = 0;
      sei();
    
      while(1) 
      {
        for (i=0; i<250; i++){
          OCR0B = i;
          _delay_ms(10);
        }
        for(i=250; i>0; i--){
          OCR0B = i;
          _delay_ms(10);
        }
      }
    }
    Eigentlich denke ich, dass der Pin mit OC0A (PB0) alle 32ms auf High gesetzt wird (OCR0A=255) und sobald OCR0B seinen Wert erreicht hat, wird der Pin wieder auf Low gesetzt.
    in der whil-Schleife setze ich OCR0B ja immer höher und anschließend immer niedriger. Damit möchte ich eigentlich, dass die LED heller und dunkler wird.
    Aber meine LED bleibt komplett aus
    habe ich noch etwas vergessen?

    Chandler

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2013
    Beiträge
    18
    OCR0A ist deine obere Grenze bist zu der der timer hinauf zählt.
    OC0B wird beim Erreichen von OCR0B gelöscht und beim Überlauf (OCR0A + 1) wieder gesetzt.
    Du müsstest also die LED an OC0B hängen und COM0B1 anstatt COM0A1 setzen. Dann würde das Ganze prinzipiell einmal funktionieren.

    Ansonsten:
    Wieso setzt du OCR0A extra als obere Grenze wenn du sowieso bis 255 zählst und betreibst das Ganze nicht gleich im mode 3 laut Datenblatt?
    Interrupts musst du jetzt auch nicht global freischalten wenn du gar keinen Interrupt behandelst.
    Die Variable i als globale Variable ist jetzt auch unnötig.
    Geändert von Siad (14.12.2014 um 07:49 Uhr)

Ähnliche Themen

  1. Proble mit PWM Fading über 10k Pottis
    Von rauf81 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 19.09.2011, 15:54
  2. Atmega Led Fading Software PWM
    Von Tux12Fun im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 02.04.2010, 00:20
  3. LED Fading
    Von NeOn_HD im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 18.09.2009, 18:25
  4. RGB-LED-Fading: Divisionsprobleme
    Von Bääääär im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 19.02.2009, 17:03
  5. Taster an Attiny45
    Von frankz im Forum C - Programmierung (GCC u.a.)
    Antworten: 22
    Letzter Beitrag: 06.03.2007, 22:47

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress