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?
Hi du brauchst halt ein paar Takte mehr aber beim AVR sollte das noch keine große Performance-Bremse sein. Matthias
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. ...
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
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...
Puhhh... Warum sind die Tasten nur immer so eng zusammen... ...HanneS... (ohne "m")
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.