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


von avusgalaxy (Gast)


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?

von Matthias (Gast)


Lesenswert?

Hi

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

Matthias

von ...HanneS... (Gast)


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.

...

von Matthias (Gast)


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

von ...HanneS... (Gast)


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...

von ...HanneS... (Gast)


Lesenswert?

Puhhh... Warum sind die Tasten nur immer so eng zusammen...

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

von avusgalaxy (Gast)


Angehängte Dateien:

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.

von Peter D. (peda)


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

von avusgalaxy (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.