AVR: Internal clock turbo, 12MHz mit Tiny2313

Gast #1970201
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?
#1970330
> 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.
Gast #1970498
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.
(Firma: TravelRec.) Persönliche Seite #1970564
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).
Gast #1970665
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.
Gast #1971264
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
#1971267
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.
#1971270
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.