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.
Und es kann ? Zumindest der zusammenhang waere mal interessant.
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.
Aber das händische Nachladen des Timers erfolgt doch erst nach dem ISR-Einsprungs-Overhead. Ist das berücksichtigt??
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?!?
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.
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
>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...
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
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
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, ...)?
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
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...
>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...
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=file&file_id=169 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
> 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
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
1 | #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
> 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
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
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
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
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.
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
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.