S-RAM zu langsam?

Gast #143406
Hi.

Hab jetzt mal was getestet. Wollte ein Programm mit 8 PWM Ausgängen
machen, wo jede seperat ein und ausdimmt. Da gehen ja schon viel
Register drauf...

Habe es jetzt mal mit 2 temp register probiert, wo ich einfach jeden
pwm wert und sonstige Sachen abspeichere. Bei jeder Änderung, lade ich
mir das gewünschte Bit aus dem S-RAM und verändere ihn, und zuletzt
speichere ich ihn wieder. Und das mit 2 Registern.

Ist zwar sehr Registersparend, aber das Programm geht voll in die
Knie.

Ist der S-RAM so langsam beim laden und schreiben?
Gast
Naja, in jeder Timer-ISR 8 Bytes aus SRAM holen und wieder
zurückspeichern, das läppert sich zusammen. - Falls das Programm
überhaupt in der Timer-ISR läuft. Vielleicht solltest du woanders
optimieren, damit du die 8 Sollwerte in den unteren Registern lassen
kannst.

...
Gast
Hi

das Laden von 8 Werten in der ISR dauert exakt 18 Takte.
Zurückspeichern ist bei Software-PWM nicht nötig. Also das sollte nicht
wirklich ein Problem sein.

Matthias
Gast
Das ist korrekt. Er schreibt aber, dass er die Bits (ich denke er meint
die Bytes) ins SRAM zurückspeichert.

Aber ohne Code ist das alles Spekulation, auch wenn ich Teile des
Ausgangscodes kenne.

Beste Grüße,
...HamnneS...
Gast
Leider ohne Timer... Das mit dem Timer, das raff ich noch nicht ganz...
Muss erst ein gutes Beispiel finden... Hier das ewig lange
Programm....

Natürlich hätte man es 1000mal einfacher machen können, aber jeder
fängt mal an. Beim nächstenmal gehts bestimmt besser beim schreiben.
Angehängte Dateien:
Für eine 8Kanal 8Bit PWM brauchst Du 9 Register, da bleiben also noch 23
Register übrig.

Ein Register zählt runter und schaltet alle Eingänge beim Nulldurchgang
aus, die anderen 8 zählen auch runter und schalten beim Nulldurchgang
den jeweiligen Pin ein. D.h. die Zähldifferenz entspricht dann dem
PWM-Wert.


Peter
Gast
Hallo Peter.

Stimmt, aber ich machs ja nicht über den Timer, sondern über eine
normale Pause. Da braucht man noch 2 Register.

Dann brauch ich noch ein Register zum Bit setzen(Wenn FF oder 00
erreich ist, um wieder ein oder auszudimmen)

Dann brauch ich noch 2 Register, um entweder FF(-1) oder 01(+1)
dazuzuzählen.

Vielleicht denk ich ein bisschen kompliziert. Aber 2 oder 9 Register
sind ein großer Unterschied.


Gruß Avus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.