mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PC-Programm zur Timer Berechnung


Autor: Zens Uhr (panzerkeks) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen!

Habe lange rumgebastelt, und, nachdem ich selbst nichts Besonderes in 
der Richtung gefunden habe, selbst ein

Programm zur Berechnung von Prescaler/Preloader-Werten

geschrieben. Das hab ich mal angehängt.
Ist natürlich "beta" ;) geschrieben in AutoIt3.

Wer möchte, darf mir hier gerne ein Feedback geben.

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quelle geheim?

Autor: Zens Uhr (panzerkeks) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Quelle angehängt :)

Autor: Skua (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!!!!!

Autor: Zorc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und es kann ? Zumindest der zusammenhang waere mal interessant.

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu braucht man sowas?

Autor: Zens Uhr (panzerkeks) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal eine neuere Version (+Quellcode), bei der vorigen wurde das 
Bild nicht korrekt angezeigt.

Um eine bestimmte Timer-Overflow-Frequenz zu erreichen, muss man dem 
Timer einen Prescaler geben und ihn dann nach jedem Overflow nachladen. 
Das Programm rechnet die günstigsten Werte für die gesuchte Frequenz 
aus.

Ich brauche sowas eigentlich ständig, wenn ich eben mit einem Timer eine 
Frequenz erzeugen will, und nicht mühselig rumprobieren möchte.
Dann gebe ich dem Programm meine F_CPU, die Bitbreite des Timers, und 
noch die Frequenz die ich haben möchte. Letztere kann in Hz, aber auch 
in us, ms und s angegeben werden.
Die Prescaler sind auch noch veränderbar, falls ein uC einen nicht 
unterstützen sollte, oder noch mehr zur Auswahl stehen.
Auf "Berechnen" drücken, und schon bekommt man die optimalen Werte. Mit 
den Knöpfen neben dem Ausgabefeld kann man den Prescaler auch 
nachträglich nochmal verändern.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber das händische Nachladen des Timers erfolgt doch erst nach dem 
ISR-Einsprungs-Overhead. Ist das berücksichtigt??

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, für welche aktuellen µCs muss man denn Timer noch von Hand 
nachladen? OK, bei einer Änderung der gewünschten Frequenz, ja. Aber das 
sollte es doch gewesen sein?!?

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich fände es toll, wenn es sowas als Javascript oder Java-Applet auf 
einer Homepage geben würde. Dann kann man das fix von jedem Rechner aus 
benutzen, ohne erstmal was installieren zu müssen. Und es funktioniert 
unter jedem Betriebssystem.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laurenz Altenmüller wrote:

> Ich brauche sowas eigentlich ständig, wenn ich eben mit einem Timer eine
> Frequenz erzeugen will, und nicht mühselig rumprobieren möchte.

Komisch, ich habe sowas noch nie gebraucht.

Es ist mir viel zu umständlich, immer erst ein extra Programm starten zu 
müssen und dann die Wert in meinen Quelltext eintragen zu müssen.

Ich lasse die Konstanten ganz einfach direkt vom Compiler berechnen, 
dazu isser ja schließlich da:

Beitrag "Die genaue Sekunde / RTC"


Peter

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hmmm, für welche aktuellen µCs muss man denn Timer noch von Hand
>nachladen?
Dem stimme ich zu, wozu gibt es denn auch (zumindest beim AVR) den 
CTC-Modus?

>OK, bei einer Änderung der gewünschten Frequenz, ja. Aber das
>sollte es doch gewesen sein?!?

Eben.
Interessant ist es doch erst, wenn man während der Laufzeit die Frequenz 
derart ändert/ändern muss, dass man am Prescaler "herumspielen" muss.
Da bringt eine externe Exe auch nichts...

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vor Jahren für die gleiche Berechnung ein paar Excel-Sheets 
angefertigt. Das geht mit diesem Programm hier aber auch prima. 
Besonders dann, wenn man irgendwo ein paar "schräge" Quarze ausgelötet 
hat und deren
Brauchbarkeit für eine bestimmte Aufgabe überprüfen will, ist das 
Programm
eine gute Möglichkeit.

Nicht jeder Compiler hat einen Präprozessor in sich drin, der dem 
Bediener
solche Rechnereien abnimmt.

Ich jedenfalls bedanke mich bei Laurenz dafür!

MfG Paul

Autor: merlin63 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

es ist ja möglich, das die profis unter euch so ein prog sinnlos finden, 
aber ich als basic-progger und noch-newbie finde es gut und bedanke mich 
auch bei laurenz.

gruß thomas

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul Baumann wrote:
> Nicht jeder Compiler hat einen Präprozessor in sich drin, der dem
> Bediener
> solche Rechnereien abnimmt.

Also bei nem ANSI-C Compiler ist das Pflicht, jeder kann das.

Wie es beim Bascom-Compiler aussieht weiß ich nicht.
Der AVR-Assembler kann zwar kein float, aber 32Bit integer.


Peter


P.S.:
Vielleicht wärs endlich mal an der Zeit, das Geheimnis zu lüften, um 
welche Timer es überhaupt geht.
Nur um die einer ganzen MC-Familie oder nur wenige Typen davon oder ist 
das Programm universell für alle MCs (ARM, 8051, MSP, ...)?

Autor: anfaenger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hast du wohl nicht richtig gesucht ;-) Aber sowas gibt es bereits. 
Und es kann sogar noch viel mehr als Timerwerte zu berechnen.

www.avrcalc.com

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
anfaenger wrote:
> Da hast du wohl nicht richtig gesucht ;-)
Und Du hast wohl nicht richtig gelesen!

> Aber sowas gibt es bereits.
> Und es kann sogar noch viel mehr als Timerwerte zu berechnen.
>
> www.avrcalc.com
Für AVRs, ja. Aber es wurde bereits erwähnt, dass das o.g. Programm 
nicht auf eine µC-Familie beschränkt sein soll. Und tatsächlich, es 
existieren µCs, die nicht AVR heißen!

Mich würde es trotzdem immer noch interessieren, bei welchen µCs 
überhaupt noch ein manuelles Timer-Reload-Gefuddel erforderlich ist...

Autor: Ohh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mich würde es trotzdem immer noch interessieren, bei welchen µCs
>überhaupt noch ein manuelles Timer-Reload-Gefuddel erforderlich ist...

Bei allen, die noch nicht Gedanken lesen koennen...

Autor: Zens Uhr (panzerkeks) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

sind ja geteilte Gefühle zu meinem Programm vorhanden - Aber:
Ich zwinge niemanden, es zu benutzen!! :D
Dennoch schön, dass es jemanden wie Thomas gibt, der meine Arbeit 
würdigt ;)

AVRCalc kannte ich tatsächlich nicht:
Kann zwar mehr, aber wählt zB nicht von alleine den optimalen Prescaler 
für seine Berechnungen.
Habe dabei gleich noch etwas gefunden:
http://www.roboternetz.de/phpBB2/dload.php?action=...
So ähnlich wie mein Programm, lässt aber zum Beispiel keine eigene F_CPU 
definieren, oder Prescaler umschalten oder hinzufügen. Der Timer-Takt 
kann nur in Hz angegeben werden.

Anwenden lassen sich die Werte für jeden µC, der einen Timer hat, der 
über einen (beliebigen, da hier auswählbaren) Prescaler von einer 
beliebigen Frequenz (meist wohl F_CPU) getaktet wird und eine feste 
Bitbreite (=maximalwert, zB 8Bit -> 0-255) besitzt.
AVRs eben zum Beispiel. Zugegebenermaßen kenne ich mich mit anderen 
Controllerfamilien nicht genau aus, aber ich bin mir relativ sicher, 
dass die das genauso handhaben.

mfg pk

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> sind ja geteilte Gefühle zu meinem Programm vorhanden

Ja. Denn  es gibt da verschiedene Anwendergruppen.

Da gibt es die, die wissen wie es geht, und auf solche Hilfsmittel 
verzichten, weil sie den Präprozessor oder auch mal den Taschenrechner 
nutzen. Sie haben oft auch eine natürliche Hemmschwelle, sich 
irgendwelche Progrämmchen unbekannter Hrerkunft aus dem Netz 
herunterzuladen, von denen man nicht weiß, was sie neben ihrer 
eigentlichen Aufgabe noch so alles machen. Das ist eben eine Frage des 
Vertrauens.

Dann gibt es die, die wissen wie es geht, aber gern solche Hilfsmittel 
im Netz finden und auch benutzen.

Und dann gibt es auch noch die, die nicht wissen wie es geht und sich 
von solchen Hilfsmitteln abhängig machen. Diese Leute werden dank 
solcher Hilfsmittel vermutlich nie die Zusammenhänge begreifen. Für 
diese Leute sind solche Programme eher schädlich als nützlich.

Dass Du als Autor weißt wie es geht, steht ja außer Frage. Ich würdige 
daher Deine Leistung, auch wenn ich immer noch nicht davon überzeugt 
bin, dass ich es (Dein Programm) brauchen könnte.

Wenn ich spezielle Problemchen habe, schreibe ich mir auch schnell mal 
ein spezielles PC-Progrämmchen für diesen einen Zweck, das aber meist 
gar nicht erst compiliert wird, da es seine Aufgabe bereits während der 
Erstellungsphase erledigt hat.

Gruß, Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinusgeek wrote:
> Sie haben oft auch eine natürliche Hemmschwelle, sich
> irgendwelche Progrämmchen unbekannter Hrerkunft aus dem Netz
> herunterzuladen

Bei mir isses keine Hemmschwelle, sondern pure Faulheit.
Mal läuft ein ATtiny13 bei 1,2MHz, ATtiny24 bei 8MHz, ATmega8 mit 
11,0592MHz, ein ATmega328 mit 20MHz usw.

Deshalb habe ich keine Lust, ständig im Code sämtliche Delays neu 
anpassen zu müssen.
Da wird nur im h-File
#define XTAL 11.0592e6
angepaßt und alle Delays stimmen wieder, weil der Compiler die richtigen 
Konstanten automatisch ausrechnet. Und auch Baudrate, I2C-Takt, 
ADC-Frequenz usw..
Die C-Files bleiben unverändert.
Und das ist auch sicherer, da man, wenn man an vielen Stellen was ändern 
muß, immer eine Stelle vergißt.


Peter

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Deshalb habe ich keine Lust, ständig im Code sämtliche Delays neu
> anpassen zu müssen...

Peter, mit Deiner Aussage ennst Du bei mir offene Türen ein. Die Sache 
ist allerdings nur sinnvoll, wenn man kein Anfänger ist und sich sicher 
ist, dass die Delay-Startwerte immer noch in die Register passen. Sonst 
sucht man Fehler, wo gar keine sind...

Michael

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MoinMoin,

falls es irgend jemanden interessiert, das Progrämmchen läuft auch mit 
wine unter Linux mit einer X-Oberfläche...

... und so schlecht finde ich das Tool nun auch nicht. Stimmt schon, 
dass man alles dem Compiler zum berechnen vorwerfen kann. Aber um mal 
schnell abzuschätzen was da rauskommen sollte, ist das manchmal 
nützlich.

Uwe

Autor: Jochen R. (josch90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde das Programm auch nicht schlecht, und wer es nicht benutzen 
will muss es ja nicht.
Hab noch ne kleiune Ergänzung:
Für 8051 controller müsste das Programm die Frequenz nochmals durch 12 
Teilen (diese benötigen 12 Oszillatorschwingungen für einen Systemtakt).

Die Ausgabe als HEX-Zahl wäre mir persönlich beim Programmieren lieber, 
da können weniger fehler beim Abschreiben entstehen.

Gruß

Jochen

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Da wird nur im h-File#define XTAL 11.0592e6
angepaßt und alle Delays stimmen wieder, weil der Compiler die richtigen
Konstanten automatisch ausrechnet. Und auch Baudrate, I2C-Takt,...

Da weisst du aber immer noch nicht, wie groß beispielweise dein 
Baudratenfehler ist.

Bei mir sieht das so aus.

MfG Spess

Autor: Skriptor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welches Malprogramm hast Du dafür genommen? :P

Ich finde es vorteilhaft und auch die beste Dokumentation, wenn im 
Quelltext nachvollziehbar ist, wie eine Konstante entsteht. Da muss also 
im Kommentar oder als Präprozessoranweisung eine Formel stehen.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

1. Das Malprogramm heisst Delphi
2. Ich bin (bei AVRs) notorischer Assemblerprogrammierer. Also muss ich
   mich mit meinem Präprozessor anpassen
3. Die Berechnungen sind eigentlich nur die Peanuts vom Gesamtprogramm
   (ca. 500 von etwa 35000 Quelltextzeilen, wenn überhaupt).
4. Ob es sinnvoll ist, z.B. die Berechnung einer Baudrate im Quelltext 
zu
   dokumentieren lasse ich mal im Raum stehen. Ich weiss wie es geht und
   wo es steht.

Das Programm ist so nach und nach in den letzten 10 Jahren entstanden. 
Je nach Bedarf und Lust erweitert. Dafür hat es alles, was ich als 
notwendig und nützlich empfinde. Und allmal besser als irgendwelcher 
halbseidener Kram aus dem Internet.

MfG Spess

Autor: Sinusgeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das unterscheidet wohl den Selbermacher vom Benutzer....

M.

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.