www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik S-RAM zu langsam?


Autor: avusgalaxy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

du brauchst halt ein paar Takte mehr aber beim AVR sollte das noch
keine große Performance-Bremse sein.

Matthias

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

...

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Puhhh... Warum sind die Tasten nur immer so eng zusammen...

...HanneS... (ohne "m")

Autor: avusgalaxy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: avusgalaxy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.