Hallo zusammen, ich habe folgendes Problem. Für mein kleines Software-PWM projekt könnte ich noch ein wenig mehr CPU-Leistung von meinem AVR gebrauchen, da ich mit meinen 12 Kanälen + Kommunikation rechenleistungsmäßig an der Grenze bin und doch noch ein Paar Hz im PWM-Takt gebrauchen könnte. Der interne Oszillator ist ja so schon nicht sonderlich "stabil" was die Frequenz angeht, aber damit komme ich ganz gut klar. SPI nimmts da zum Glück nicht so genau, die SoftPWM freut sich um jedes Hz und mehr "Kontakt zur Aussenwelt" gibts nicht. Daher die Frage: wenn ich meinen Tiny2313 auf 8MHz internal clock fuse (als Verb) und per Software (Register OSCCAL=0x7F) auf maximal trimme, kann ich dann mehr Rechenleistung von meinem AVR erwarten? Laut Datenblatt hat der dann von den 8MHz ausgehend statt (min./max.) 75%/150% 100%/200%. Ich würde also 150% im Mittel erwarten was 12MHz entspricht und 50% mehr Rechenleistung bedeutet. Korrekt? Spricht irgendwas ernsthaft gegen mein Vorhaben? Quarz hab ich nicht, will ich nicht und ich optimiere lieber in stundenlanger Programmierarbeit den Code... Vielen Dank lg Richard Ganz am Rande noch: vielleicht hab ichs irgendwo überlesen aber was passiert wenn ich OSCCAL > 0x7F setze? wird einfach das MSB abgeschnitten?
Vielleicht wär der ATtiny261 was für Dich. Der kann ganz offiziell intern mit 16MHz laufen. Peter
den Tiny2313 hab ich ja hier noch in meiner Bastelkiste liegen... Will ja keine Großproduktion damit starten. Einfach 4free n Paar Hz rauskitzeln.
> Für mein kleines Software-PWM projekt könnte > ich noch ein wenig mehr CPU-Leistung von meinem AVR gebrauchen, > da ich mit meinen 12 Kanälen + Kommunikation rechenleistungsmäßig > an der Grenze bin Wieviele Bits umfasst denn deine Software PWM? 12 Kanäle ist doch nicht viel.
256 Bit * 12 Kanäle @ 100Hz + bissl kommunikation + berechnung der PWM-Werte (relativ komplizierte formeln... unwichtig) ich bin am limit der Rechenleistung, wenn ich versuche die frequenz zu steigern kommt die Kommunikation arg ins stocken... Aber wie ich das sehe hat noch niemand ausprobiert auf diese Art noch ein Paar Hz zu finden. Ich probiers einfach. Mit Quarz darf er ja 20MHz insofern sollte da kein Problem sein.
Richard schrieb: > wenn ich meinen Tiny2313 auf 8MHz internal clock fuse > (als Verb) und per Software (Register OSCCAL=0x7F) auf maximal trimme, Warum zum Geier schliesst Du keinen 20Mhz Quarz oder Resonator an, der T2313 kann laut Spezifikation bei 5V mit 20 Mhz laufen. Richard schrieb: > Mit Quarz darf er ja 20MHz Genau! Die interne Trimmung geht ungefähr bis 14Mhz, aber dann funktionieren bestimmte Peripherien nicht mehr (EEPROM zum Beispiel).
Richard schrieb: > 256 Bit * 12 Kanäle @ 100Hz ^^^^^^^ Da wundert mich dann nichts mehr :) Meinst du 8 Bit? Wenn deine PWM-Wert-Berechnung aufwendig ist, kannst du die evtl. in eine Lookup-Tabelle verpacken, wenn noch genug Flash frei ist?
Richard schrieb: > Quarz hab ich nicht, will ich nicht und ich optimiere lieber in > stundenlanger Programmierarbeit den Code... Ach ja.
Ja ein Quarz wäre ne lösung, richtig, aber den hab ich nicht rumliegen. Genaugenommen hab ich keine nötigen 22pF rumfliegen... Das war aber auch nicht die Frage. Knut Ballhause schrieb: > Die interne Trimmung geht ungefähr bis 14Mhz, aber dann > funktionieren bestimmte Peripherien nicht mehr (EEPROM zum Beispiel). das interne EEPROM dürfte aber davon nicht betroffen sein oder? das müsste doch weiterhin stresfrei funktionioeren?! Maik Fox schrieb: > Meinst du 8 Bit? ja richtig. my FAIL. Sorry und ja vermutlich könnte man noch bissl was am Code optimieren, wobei für ne lookup-tabel wirds schon wieder knapp... na egal ich probiers erstmal mit dem "overclocking" welches ja nichtmal wirklich eines ist.
@ Richard (Gast) >256 Bit * 12 Kanäle @ 100Hz Du meinst eher 8 Bit. Den Artikel Soft-PWM gelesen? Damit hast du auch bei 8 MHz massig Rechenzeit. MFG Falk
Richard schrieb: > das interne EEPROM dürfte aber davon nicht betroffen sein oder? das > müsste doch weiterhin stresfrei funktionioeren?! Nee, eben nicht. Das Timing des EEPROMs wird direkt vom internen Oszillator abgeleitet. Bei mehr als 20% Trimmung, abweichend vom Nominalwert 8Mhz, ist das EEPROM ausserhalb seiner Spezifikation.
Knut Ballhause schrieb: > Das Timing des EEPROMs wird direkt vom internen > Oszillator abgeleitet. Bei mehr als 20% Trimmung, abweichend vom > Nominalwert 8Mhz, ist das EEPROM ausserhalb seiner Spezifikation. Ich verstehe. Gut dann wird am Code optimiert... Den Artikel "Soft-PWM" hab ich übrigends schon studiert. Allerdings war ich bisher noch nicht ausreichend motiviert mich an die "intelligente" PWM ranzuprogrammieren. Die Motivation dürfte aber dann jetzt da sein ^^ Und zur Not denke ich komme ich auch mit ner 11 Kannal 7 Bit PWM aus... Danke an alle! lg Richard
Richard schrieb: > und ja vermutlich könnte man noch bissl was am Code optimieren, bissi was ist gut. Mit 4Mhz kommt man auf eine PWM Frequenz von knapp 60Hz wenn man das ganz einfach Straight Forward macht. Also ohne gross zu optimieren. Und bei 256 Takten zwischen den Interrupt Aufrufen bleibt auch bei 12 Kanälen noch genug Zeit übrig.
Richard schrieb: > Und zur Not denke ich komme ich auch mit ner 11 Kannal 7 Bit PWM aus... Die Anzahl der Kanäle ist ziemlich egal (solange sie im Rahmen bleibt. Einer mehr oder weniger ist der for-Schleife auch schon egal) Die Anzahl der Bits aber nicht. Die geht direkt in die PWM Frequenz ein und die ist wiederrum für Flackerfreiheit wichtig.
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.