Zitat Zitat von Che Guevara Beitrag anzeigen
Es funktioniert doch, anscheinend hatte ich damals irgendwo einen Fehler...
Schön
Habe jetzt auch den Timer0 Interrupt umgeschrieben, wäre nett, wenn du kurz drüberschauen könntest, obs so passt!? Fliegen tut das ganze
Speziell in diesem Fall kannst Du Dir das Sichern des SREGs sparen, denn weder LDI noch STS verändert das SREG. Würdest Du statt dessen !CLR R16 schreiben, wär's etwas anderes.
Code:
Detectrxpause:
!PUSH    R16
!LDI     R16,       0
!STS     {channel}, R16
!POP     R16
Return
Habs gerade mal probiert, mithilfe der Overlay Funktion würde kein zusätzlicher Speicher verbraucht.
Hältst du das für sinnvoll?
Ich seh' jetzt nicht so recht, wie Du im gezeigten Noise-Filter Code mit Overlay arbeiten willst.

Wie sieht's den mit der Aufrufrate dieses Noise-Filter Codes aus ? Normalerweise sind solche Filter an ein Timing gebunden. Oder läuft der da so schnell er kann ?
Müsstest mal den Code extrahieren und alleine laufen lassen, um zu sehen wie viel Rechenleistung der frisst und ob es lohnt da viel Arbeit reinzustecken.

Edit:
Das hier kann der Compiler zur Compilezeit auflösen und es ist deshalb genauso schnell wie die Adressierung einer einzelnen Variable.
Code:
If Sempf(1) > -37 And Sempf(1) < 37 Then
Das kann der Compiler nicht vorher auflösen, da er den Wert von "i" nicht kennt, das kostet mehr Code und Ausführungszeit:
Code:
If Sempf(i) > -37 And Sempf(i) < 37 Then