- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: ATMega und 12 PWM Kanäle

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Paul!

    Ich möchte mich am Wochenende an I²C versuchen und als Beispielanwendung werde ich 12 LEDs verschieden stark dimmen lassen. Vielleicht haut es hin. Und vielleicht kannst du das dann übernehmen um den ATmega8 als I²C-LED-Dimmer zu verwenden. Mal sehen...

    mfg
    Gerold
    :-)

  2. #12
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Für 10 Kanäle kann es wirklich nötig sein die ISR Routine in Assembler zu schreiben. Ist aber zumindest bei 8 Bit Auflösung nicht lang. Der wesentliche Teil sind Befehle nach dem Muster
    LD r1,x+
    cp r1,r2
    rol
    für jeden Kanal.

    Das wird trotz optimierung eine relativ lange ISR Routine, sodass man zumindest nichts wirklich zeitkritischen nebenbei machen kann.

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    Ich hab noch ein wenig rumgerechnet und bin dann auf folgende Zahlen gekommen.
    Bei 20MHz Taktfrequenz mit einem Prescaler von 8 und einem Einstellbereich von 0..127 ( 128 Helligkeitsstufen ) kann man eine PWM Frequenz von
    20 MHz / 2^15 / 8 = 76,3 Hz erreichen. Das sollte somit flimmerfrei gehen.
    Es können 2048 Taktzyklen, das dürften etwa 1800 Assembler Befehle sein, abgearbeitet werden bis der nächste Interrupt auftritt.

    Für deine Interruptroutine werden in etwa 100..150 Befehle draufgehen, für den Rest kann das Hauptprogramm abgearbeitet werden.

    Das ist eine ganze Menge. Hochkomplexe Mathematische Gleichungen möchte ich zwar so nicht lösen, aber für einen Schnittstellenhandler sollte das mehr als locker reichen.

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Zitat Zitat von wkrug
    I0..127
    Hallo wkrug!

    :-)

    An 7 statt 8 Bit hatte ich noch nicht gedacht. So könnte man PWM im Interrupt-Handler belassen. Ich werde das in meine Überlegungen mit einbeziehen. Danke.

    mfg
    Gerold
    :-)

  5. #15
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Den PWM kann man schon im Interruptshändler lassen. In Assembler solle man für jeden Kanal etwa 6-10 Zyklen brauchen, wenn die Portbits einigermaßen zusammenhängen. Bei 10 kanälen also etwa 60-100 Zyklen für die ganze ISR Routine das ist noch nicht so viel. Wenn man alle 256 Zyklen den Interrupt aufruft hätte man noch über die Hälfte der Rechenzeit übrig und käme bei 8 Bit Auflösung immer noch auf 20 MHz / 256 / 256 = 300 Hz Wiederhohlfrequenz. Flimmerfrei würden so sogar bis zu 50 LEDs gehen.

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.191
    bei 8 Bit Auflösung immer noch auf 20 MHz / 256 / 256 = 300 Hz Wiederhohlfrequenz. Flimmerfrei würden so sogar bis zu 50 LEDs gehen
    Einspruch:
    Du fährst mit diesen Parametern alle 256 Taktzyklen einen Timer Overflow Interrupt, wenn Du einen der 8Bit Timer verwendest.
    Das sind im Günstigsten Fall ca. 250 Assembler Befehle.
    Da der Einsprung und der Aussprung ja auch Rechenzeit verbrät bleibt Dir dann für die Hauptroutine fast nichts mehr übrig.

    Eine Alternative wäre es noch den 16Bit Timer im Comparematch Mode mit CTC laufen zu lassen.
    Damit wäre dann die PWM Frequenz, sowie die anzahl der Takte dazwischen ( voneinander abhängig ) in weiten Grenzen einstellbar.

    Hir hat auch schon jemand mal eine Rotine vorgestellt, die die einzelnen Kanäle nach ihrer Pulsbreite sortiert und den Comparematch dann von einem zum nächsten Kanal weiterschaltet.
    Somit können bei einem Timerdurchlauf alle gewünschten Kanäle bedient werden. Dadurch kann mit sehr hohen Prescale Raten gearbeitet werden, was Rechenzeit für das Hauptprogramm bringt.

  7. #17
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ich komme in Assembler auf relativ wenige Zyklen (ca.60 bis vielleicht 100) für 10 Software PWM-Kanäle. Damit wird bei einem Aufruf alle 256 Zyklen nicht mal die Hälfte der Rechenzeit verbraucht. Da hier in Assembler mit dem carryflag und Shits gearbeitet wird, kann es gut sein, das die C oder Basic Compliler hier deulich langsamer sind.

    Wenn es der Timer zuläßt (CTC, Prescaler oder notfalls per reload im Interrupt) kann man natürlich eine niedrigere Frequenz wählen.

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Zitat Zitat von python_rocks
    Ich möchte mich am Wochenende an I²C versuchen und als Beispielanwendung werde ich 12 LEDs verschieden stark dimmen lassen.
    Hallo!

    War wohl nichts. Das Wochenende ist für andere Aktivitäten drauf gegangen. :-(

    mfg
    Gerold
    :-)

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied Avatar von mycroc
    Registriert seit
    29.11.2006
    Ort
    Bochum
    Beiträge
    111
    warscheinlich werden ja 12 Analog Ausgänge benötigt. Ich habe mal 16 Analoge so realisiert. Ein PWM Ausgang des Controlers geht an 16 (oder auch 12) eingänge mehrerer 74LS126  (3-state ausgang). An jedem Ausgang ist ein R C Glid und Anschließend ein OpAmp in verstärker schaltung, in meinem fall 2fach für 0-10V. Man kann dann einen Treieber (74LS126) über denn E eingang aktiviren über die PWM den Kondensator auf die gewünsachte spannung bringen und den treiber abschalten. Bis sich der Kondensator über den OpAmp entladen hatt, ist genügend zeit für andere aufgaben.
    

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    07.08.2007
    Beiträge
    5

    12 PWM Kanäle

    Hi

    ich hätte die Idee mit dem Philips Chip
    PCA9532 (1,75€ bei Reichelt !!) im SMD Gehäuse

    12 PWM LED Ausgänge über I2C Bus

    Mus man natürlich noch ein wenig hinprogrammieren.

    Gruß dirk

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress