Hallo liebes Forum,
ich möchte mittels Arduino mini (ATmega328P) und einem kleinen 4-bit-R/2R-Netwerk Sinusse erzeugen von maximal 2600 Hz.
In dem Programm werden die oberen vier Bit von PortD (dort hängt das Netzwerk) schrittweise hoch und wieder runter gezählt und zwischendurch die erforderliche Zeit per Compare-Timer-Interrupt gewartet. Ich setzte bei jedem Schleifendurchlauf den Vergleichswert neu und warte mit BITWAIT auf ein Bit das in der ISR gesetzt wird. Das ist wahrscheinlich relativ ungenau aber das simpelste was mir einfiel.
Das ganze funktioniert bei 500 Hz auch noch wie es soll, aber bei Vergleichswerten unter ca. 180 Takten versagt der ganze Algorithmus und ich weiß nicht warum! Beim entstehenden Signal ist meist nach einer Halbwelle Schluss und irgendein Wert bleibt konstant. Das angehängte Foto passt zum angehängten Quelltext, bei dem im Prinziep alle Vergleichswerte zu klein sind.
In der Bascom-Internen Simulation funktioniert alles wunderbar.
Ich kann mir auf den Kram keinen Reim machen. Ich habe mal unverfroren den ganzen Quelltext angehängt, vielleicht fällt jemanden was ins Auge
Ich bin für jede Hilfe dankbar!
Grüße,
Thalamit
ich möchte mittels Arduino mini (ATmega328P) und einem kleinen 4-bit-R/2R-Netwerk Sinusse erzeugen von maximal 2600 Hz.
In dem Programm werden die oberen vier Bit von PortD (dort hängt das Netzwerk) schrittweise hoch und wieder runter gezählt und zwischendurch die erforderliche Zeit per Compare-Timer-Interrupt gewartet. Ich setzte bei jedem Schleifendurchlauf den Vergleichswert neu und warte mit BITWAIT auf ein Bit das in der ISR gesetzt wird. Das ist wahrscheinlich relativ ungenau aber das simpelste was mir einfiel.
Das ganze funktioniert bei 500 Hz auch noch wie es soll, aber bei Vergleichswerten unter ca. 180 Takten versagt der ganze Algorithmus und ich weiß nicht warum! Beim entstehenden Signal ist meist nach einer Halbwelle Schluss und irgendein Wert bleibt konstant. Das angehängte Foto passt zum angehängten Quelltext, bei dem im Prinziep alle Vergleichswerte zu klein sind.
In der Bascom-Internen Simulation funktioniert alles wunderbar.
Ich kann mir auf den Kram keinen Reim machen. Ich habe mal unverfroren den ganzen Quelltext angehängt, vielleicht fällt jemanden was ins Auge
Ich bin für jede Hilfe dankbar!
Grüße,
Thalamit