Forum: Mikrocontroller und Digitale Elektronik AVR: Internal clock turbo, 12MHz mit Tiny2313


von Richard (Gast)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

Vielleicht wär der ATtiny261 was für Dich.
Der kann ganz offiziell intern mit 16MHz laufen.


Peter

von Richard (Gast)


Lesenswert?

den Tiny2313 hab ich ja hier noch in meiner Bastelkiste liegen...

Will ja keine Großproduktion damit starten. Einfach 4free n Paar Hz 
rauskitzeln.

von Karl H. (kbuchegg)


Lesenswert?

> 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.

von Richard (Gast)


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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).

von Maik F. (sabuty) Benutzerseite


Lesenswert?

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?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Richard schrieb:
> Quarz hab ich nicht, will ich nicht und ich optimiere lieber in
> stundenlanger Programmierarbeit den Code...

Ach ja.

von Richard (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Richard (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.