mikrocontroller.net

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


Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Ach ja.

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Richard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.