• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Tiny Tone
#61
irq :   if flag = 0 normaler reti
         if flag = 1 rücksprung main sleep befehl

main : flag == 1
          sleep  ; Rücksprungadresse irq flag = 1
          flag ==0
 
Reply
#62
(29.01.2019, 12:42 AM)voltwide schrieb: ok, ich sehe es ein. Um irgendeinen irq code aus zu führen, muß die MCU aufgeweckt werden. Ist irgendwie logisch.
Aber ich raffe es nicht weshalb ich den irq nicht mit sleep-idle beenden darf.

na überlege mal: für den DDS muss der core mit maximaler Geschwindigkeit rappeln und wir lasten ihn ja sowieso -je nach DDS rate- zu erheblichem Anteil aus : da darf nix zusätzlich "bremsen".

ich würde es so versuchen:
cpu rappelt auf max. speed - klar.
sleep-mode SM=0 , also idle mode.
int ...sind ganz "normal".
aber Hauptprogramm /main geht in : while (1) { sleep; }
somit werden int sofort+mit voller speed ausgeführt, aber nach dem int wird der core gleich wieder gestoppt.
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#63
(30.01.2019, 09:59 AM)alfsch schrieb:
(29.01.2019, 12:42 AM)voltwide schrieb: ok, ich sehe es ein. Um irgendeinen irq code aus zu führen, muß die MCU aufgeweckt werden. Ist irgendwie logisch.
Aber ich raffe es nicht weshalb ich den irq nicht mit sleep-idle beenden darf.

na überlege mal: für den DDS muss der core mit maximaler Geschwindigkeit rappeln und wir lasten ihn ja sowieso -je nach DDS rate- zu erheblichem Anteil aus : da darf nix zusätzlich "bremsen".

ich würde es so versuchen:
cpu rappelt auf max. speed - klar.
sleep-mode SM=0 , also idle mode.
int ...sind ganz "normal".
aber Hauptprogramm /main geht in : while (1) { sleep; }
somit werden int sofort+mit voller speed ausgeführt, aber nach dem int wird der core gleich wieder gestoppt.
ich gebe Dir Recht - bei max Speed dürfte die MCU-Auslastung alleine durch Timer1irq bei 60% liegen - es ist also nicht mehr allzuviel zu gewinnen.
Deinen Vorschlag hatte ich schon ausprobiert - brachte ca 1mA an Einsparung.
Das Problem ist nun mal, dass alle 8us der Timer1Irq den sleep idle beendet - also nach dem irq wieder das main loop abgearbeitet wird. Und das ist keinesfalls gleich wieder am sleep-Ausgang angekommen.
Deshalb meine Idee, am Eingang des Timer1irq den CPU-Clock auf max setzen und am Ende dann teilen durch 4..16 oder was immer für das main program. Dann kann das Hauptprogramm vor sich hin tuckern im Eco-Modus.
...mit der Lizenz zum Löten!
 
Reply
#64
Zerschiesst du dir damit nicht das Timing der PWM bzgl. Interruptaufruf? Alternativ - kannst du die Taktrate nicht passend der Ausgangsfrequenz wählen? Sub-100Hz braucht sicher nicht die volle Geschwindigkeit des PWM-Timers.
 
Reply
#65
(30.01.2019, 11:08 AM)voltwide schrieb: Deshalb meine Idee, am Eingang des Timer1irq den CPU-Clock auf max setzen und am Ende dann teilen durch 4..16 oder was immer für das main program. Dann kann das Hauptprogramm vor sich hin tuckern im Eco-Modus.

also, ich meine...spar dir die Mühe.
erst abschätzen: wenn sleep im main nur etwa 1mA "bringt", = einspart, was ca. 50% der cpu-Zeit sind, würde es vmtl. bei reduktion des clock auf 1/4 , etwa 2 mA bringen... misstrau

immerhin ist ein DDS Generator ein Prinzip, das auf hohem Datendurchsatz basiert. Genau diesen "einsparen" zu wollen....passt irgendwie logisch nicht.
+
die Monster-Li-Zelle reicht mit voller cpu speed vorraussichtlich viele Jahre, wenn man mal annimmt, dass damit 1x pro Woche 2 Minuten lang dem Sinuston gefrönt wird. (sind dann 120 min/Jahr ) Tongue
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#66
(30.01.2019, 02:38 PM)alfsch schrieb:
(30.01.2019, 11:08 AM)voltwide schrieb: Deshalb meine Idee, am Eingang des Timer1irq den CPU-Clock auf max setzen und am Ende dann teilen durch 4..16 oder was immer für das main program. Dann kann das Hauptprogramm vor sich hin tuckern im Eco-Modus.

also, ich meine...spar dir die Mühe.
erst abschätzen: wenn sleep im main nur etwa 1mA "bringt", = einspart, was ca. 50% der cpu-Zeit sind, würde es vmtl. bei reduktion des clock auf 1/4 , etwa 2 mA bringen... misstrau

immerhin ist ein DDS Generator ein Prinzip, das auf hohem Datendurchsatz basiert. Genau diesen "einsparen" zu wollen....passt irgendwie logisch nicht.
+
die Monster-Li-Zelle reicht mit voller cpu speed vorraussichtlich viele Jahre, wenn man mal annimmt, dass damit 1x pro Woche 2 Minuten lang dem Sinuston gefrönt wird. (sind dann 120 min/Jahr )  Tongue

Da könntest Du durchaus Recht haben, viel Sinn ist in dieser Art des tuning kaum noch zu erkennen - und der reine Sportsgeist lässt nach Tongue
...mit der Lizenz zum Löten!
 
Reply
#67
..nach einigen (man könnte sagen: nahezu dramatischen ) Verwicklungen ist es mir gelungen, einen der 3 wieder gefundenen tiny85 zu programmieren...  Rolleyes
- habe erstmal versucht, was mit PLL und max. Takt geht: jo, 250 kHz DDS schafft er, aber mit etwa 95% CPU Last; das taugt nicht wirklich  Gurke

- dann , bei 125kHz , sieht es besser aus: ISR dauert etwa 3,8 us , Hauptprogramm hat noch etwa 4 us Zeit. das ist akzeptabel.
   
..die pulse sind das main, die 3.8us high oder low Zeiten sind der ISR.
soweit ok, dann nehme ich mir mal das Signal zur Brust  Tongue
(das wird dann wieder ein Drama...weil : die software zum erzeugen einer sin-tabelle ist auf dem alten XP laufwerk...das nicht mehr startet.  Rolleyes
btw: hat jemad davon Ahnung: ein WinXP , auf anderes Laufwerk kopiert , wieder zum laufen zu bewegen ?? ( boot.ini ist korrigiert, aber : System startet, Anmeldung...ok. dann passiert ne Minute lang nix...dann kommt . Abmeldung. keine Fehlermeldung, Ende - ganz sauber. nur nicht meine Vorstellung...  Rolleyes ))
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#68
(16.02.2019, 11:04 PM)alfsch schrieb: ..nach einigen (man könnte sagen: nahezu dramatischen ) Verwicklungen ist es mir gelungen, einen der 3 wieder gefundenen tiny85 zu programmieren...  Rolleyes
- habe erstmal versucht, was mit PLL und max. Takt geht: jo, 250 kHz DDS schafft er, aber mit etwa 95% CPU Last; das taugt nicht wirklich  Gurke

- dann , bei 125kHz , sieht es besser aus: ISR dauert etwa 3,8 us , Hauptprogramm hat noch etwa 4 us Zeit. das ist akzeptabel.

..die pulse sind das main, die 3.8us high oder low Zeiten sind der ISR.
soweit ok, dann nehme ich mir mal das Signal zur Brust  Tongue
(das wird dann wieder ein Drama...weil : die software zum erzeugen einer sin-tabelle ist auf dem alten XP laufwerk...das nicht mehr startet.  Rolleyes
btw: hat jemad davon Ahnung: ein WinXP , auf anderes Laufwerk kopiert , wieder zum laufen zu bewegen ?? ( boot.ini ist korrigiert, aber : System startet, Anmeldung...ok. dann passiert ne Minute lang nix...dann kommt . Abmeldung. keine Fehlermeldung, Ende - ganz sauber. nur nicht meine Vorstellung...  Rolleyes ))

warum nimmst Du nicht die Sinus-Tabelle die in meinem C-Code enthalten ist?
Programmierst Du das in Assembler?
...mit der Lizenz zum Löten!
 
Reply
#69
nee, nix asm. hab nur mal angesehen, was der gute gcc so macht: die ISR sieht ganz gut aus, er sichert nut die benötigten Register. viel besser machst das auch selbst nicht...die CPU braucht eben ihre Zeit...  Tongue

+ die Tabelle ist zZ Deine - aber für die 14bit Wandlung brauchts ne etwas komplexere, bzw zwei . ...die will ich nicht unbedingt mit m Taschenrechner basteln.  Wink
ist ja eh nur "just for fun" -- hab ich noch nirgends gesehen.  Cool
(...morgen , vmtl... )
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#70
(17.02.2019, 12:47 AM)alfsch schrieb: nee, nix asm. hab nur mal angesehen, was der gute gcc so macht: die ISR sieht ganz gut aus, er sichert nut die benötigten Register. viel besser machst das auch selbst nicht...die CPU braucht eben ihre Zeit...  Tongue

+ die Tabelle ist zZ Deine - aber für die 14bit Wandlung brauchts ne etwas komplexere, bzw zwei . ...die will ich nicht unbedingt mit m Taschenrechner basteln.  Wink
ist ja eh nur "just for fun" -- hab ich noch nirgends gesehen.  Cool
(...morgen , vmtl... )
Den AVM-ASM habe ich mir nie angesehen. Wenn man es auf die Spitze treiben will, könnte man innerhalb der ISR Register exklusiv nutzen, die man dann nicht retten müßte. Eine ziemlich sportliche Art der Programmierung mit ungeahnten Fehlerquellen...
...mit der Lizenz zum Löten!
 
Reply
#71
(16.02.2019, 11:04 PM)alfsch schrieb: sin-tabelle

Ich hab das bisher immer mit Excel gemacht. Formel so skaliert dass mit der entsprechenden Anzahl von Punkten eine komplette Welle draus wird und dann einfach rauskopiert.
 
Reply
#72
(17.02.2019, 10:09 AM)E_Tobi schrieb:
(16.02.2019, 11:04 PM)alfsch schrieb: sin-tabelle

Ich hab das bisher immer mit Excel gemacht. Formel so skaliert dass mit der entsprechenden Anzahl von Punkten eine komplette Welle draus wird und dann einfach rauskopiert.

leider bin ich nicht so der excel-Profi Rolleyes 
bis ich da raus habe, auf 14bit zu runden, in zwei 7bit - bytes zu splitten, mit right-align, dann als ascii mit kommas dazwischen in ne Datei...
och nö.
da hab ich das in meim alten Basic fünfmal fertig. (wenn ich es wieder zum laufen bekomme... Drecks-dämliches XP )
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#73
XP kann man nicht "rüberkopieren". Mit einem ordentlichen Laufwerksbackup geht es. Ich erinnere mich, es einmal mit einer Neuinstallation von XP mit nachträglichem Kopieren aller userrelevanten Information geschafft zu haben. Das ist aber nicht so einfach wie es klingt...
 
Reply
#74
(17.02.2019, 03:17 PM)kahlo schrieb: XP kann man nicht "rüberkopieren". Mit einem ordentlichen Laufwerksbackup geht es. Ich erinnere mich, es einmal mit einer Neuinstallation von XP mit nachträglichem Kopieren aller userrelevanten Information geschafft zu haben. Das ist aber nicht so einfach wie es klingt...

Da ist dann die Lösung mit Excel wohl zielführender...

Wenn die 14bit Auflösung wirklich den Klirrfaktor mindern soll, müßte die zugehörige Tabelle die Phasenverzerrungen der simplen PWM korrigieren. Diese machen sich mit wachsender Frequenz zunehmend bemerkbar. Ich behaupte mal, dass ansonsten der mit 125kHz/14bit abgetastete 1kHz Sinus nicht besser dastehen wird als der 16kHz/8bit mit phasenrichtiger PWM.
just saying...
...mit der Lizenz zum Löten!
 
Reply
#75
Na, es ist natürlich eine Kopie der kompletten Partition. Einzig der Unterschied: es sitzt nicht mehr an der selben Position , weil auf der alten Platte war noch Win98 und WinME vorher drauf.
Die waren sowieso tot...da ist jetzt Win7 extreme/64 drauf. Und MX Linux /64 .
Das doofe XP hatte sich selbst auf der alten Platte auf M nummeriert, auf der neuen gibt ihm Win7 aber I . Also vermutlich nennt sich auch für XP die Partition I --- was wohl das Problem ist.
Leider habe ich keine Ahnung, wie ich das mit dem Laufwerksbuchstaben ändern kann.
( Ausser mit einer 1:1 Kopie aller Partitionen der alten Platte - was ich aber nicht wirklich will. )
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#76
Wie viele Punkte hättest du gerne?
 
Reply
#77
256
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#78
Ich hab hier nur Libre Office, deshalb einmal als .ods, einmal als .xlsx, wobei ich da nicht prüfen kann was das Microsoft-Produkt draus macht, und falls du keines der beiden hast - die reinen Werte noch als .csv. 

.zip   Sinus.zip (Größe: 65,88 KB / Downloads: 220)
 
Reply
#79
cool. Big Grin 

+ i habe auch libre ...auf MX Linux, das kann ich übrigens empfehlen.
den windoof-Mist habe ich nur, weil A: auf dem ollen XP halt hunderte von (selten) benötigten Programmen sind...historisch bedingt, sozusagen; B: manche aktuellen Programme eben leider nur auf windoof , noch dazu natürlich nicht mehr auf XP, zu haben sind.
normalerweise läuft immer ein Linux... Tongue

ps: das "win7 exteme /64" kann ich bislang auch empfehlen, benimmt sich vernünftig (updates aus, Virus-scan aus, usw.) , aktiviert sich automatisch bei der Installation für 180 Tage...da kann man sich dann irgendwann entscheiden, ob man "top legal" einen key zur dauerhaften Aktivierung eingibt (wenn man zb eh einen hat, weil ein Laptop mit win drauf gekauft wurde) oder man aktiviert den daz-loader (der schon dabei ist), dann ...kostet es dasselbe, wie Linux Smile
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#80
noch ne dumme Frage: wie kopiere ich jetzt, zb die Spalte 7msb , in einem brauchbaren Format raus? ...oder eben von Hand Kommas setzen..?
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply