- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 28

Thema: Mit PCF8574P eine Led dimmen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Ich würde das weiterhin mit Soft-PWM lösen. Irgendein Timer läuft ja eh meist schon mit, da muss man dann nur noch seine eigene Funktion einklinken:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    #define led1_init DDRD |= (1<<PD2) // LEDs an PD2 und PD3
    #define led1_on  PORTD |= (1<<PD2)
    #define led1_off PORTD &= ~(1<<PD2)
    #define led2_init DDRD |= (1<<PD3)
    #define led2_on  PORTD |= (1<<PD3)
    #define led2_off PORTD &= ~(1<<PD3)
    
    volatile unsigned char p=0;
    volatile unsigned char led1_pwm=0, led2_pwm=0;
    
    void pause_ms(unsigned int dauer)
    {
    	while(dauer--)
    	{
    	   p=36;
    	   while(p); // p wird in der ISR runtergezählt
    	}
    }
    
    int main(void)
    {
    	cli();
    	// Timer2: FastPWM, no prescaling, no OC2-Pin
    	TCCR2 = (1 << WGM20) | (1 << WGM21) | (0 << COM20) | (0 << COM21) | (1 << CS20);
    	OCR2  = 0x91; // duty cycle for 36kHz
    	TIMSK |= (1 << TOIE2);
    	led1_init;
    	led2_init;
    	sei();
    	
       while(1)
    	{
    	   led1_pwm+=15;
    	   if(led2_pwm) led2_pwm /=2; else led2_pwm=255;
    	   pause_ms(500);
    	}
       return(0);
    }
    
    SIGNAL (SIG_OVERFLOW2)
    {
    	static char led_pwm=0;
    
    	TCNT2 += 0x25; // Frequenzkorrektur 36kHz
    
    	if(led_pwm)
    	{
    		if(led_pwm>led1_pwm) led1_off;
    		if(led_pwm>led2_pwm) led2_off;
    	}
    	else
    	{
    		if(led1_pwm) led1_on;
    		if(led2_pwm) led2_on;
    	}
    	led_pwm++;
    
    	if(p) p--; // 1/36000 Sek.
    }
    Für einen 8MHz-Mega8 auf Basis der 36kHz des Timer2 (aus der asuro-Lib). Soll das nun ein Mega8 oder ein Mega32 werden? Oder gar der RP6?

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Danke schon mal für die antworten, werde es mal testen

    Soll ein Mega32 werden.

    mfG
    Philip

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    so... habe jetzt ein paar Ports der m32 frei gemacht

    Das hört sich für mich jetzt so an als ob er das RP6-M32 Erweiterungsboard meint und keinen einzelnen MEGA32.
    Du musst da natürlich die Pinbelegung beachten.
    PD5 / OC1A ist auf der M32 als Hardware PWM Port verfügbar die anderen aber alle nicht (OC2 ist mit dem Buzzer verbunden, wenn Du den nicht brauchst... ).

    --> Software PWM ist schon die bessere Lösung gibt hier im Forum ja Libs dazu.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.242
    Software PWM ist schon die bessere Lösung gibt hier im Forum ja Libs dazu.
    Im Prinzip ist das schon richtig, aber das erzeugt auch eine Menge Prozessorlast. Wenns möglich ist würde ich immer Hardware PWM den Vorzug geben.
    Es sei denn man braucht mehr Ausgänge, oder die Ausgänge müssen frei wählbar sein, oder die Timer sind mit anderen Aufgaben belegt.

Ähnliche Themen

  1. RP6 M32 und noch ein PCF8574P?
    Von AsuroPhilip im Forum Robby RP6
    Antworten: 14
    Letzter Beitrag: 27.06.2011, 22:19
  2. LCD über Pcf8574P an Rn mega128funk
    Von Kalli01 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 16.08.2010, 18:16
  3. Nochmal I2C PCF8574P
    Von Cruser12 im Forum Asuro
    Antworten: 10
    Letzter Beitrag: 23.06.2010, 21:09
  4. Schalter an den PCF8574P anschließen
    Von Cruser12 im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 11.05.2010, 21:17
  5. LCD an PCF8574P im I2C-Mode
    Von Vector3 im Forum Sensoren / Sensorik
    Antworten: 5
    Letzter Beitrag: 30.03.2009, 08:02

Berechtigungen

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

Labornetzteil AliExpress