www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Avr-Timer Reloadwerteberechnung


Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Hat jemand ein Programm gesehen, bzw. geschrieben, mit dem man bei
gegebener Quarzfrequenz und gegebener "Interruptfrequenz" den
Vorteiler- (Prescaler) wert eintragen kann und bekommt dann den
Wert, mit dem man den eigentlichen Timer vorladen muß?

Z.B. Ich habe einen 4Mhz Quarz und will 1 Sekunde erzeugen.
Dann  stelle ich den Vorteiler auf 256 und kriege 15625 Hz als
Eingangstakt für den eigentlichen Timer. Jetzt muß ich den Timer
mit 49911 vorladen, dann zählt er von da ab bis 65536 und läuft über.

Jetzt suche ich ein Programm, was mir eben diese 49911 ausgeben
würde.

MfG Paul

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich erledigt, habe hier was gefunden.

http://pages.zoom.co.uk/andyc/index.htm

MfG Paul

Autor: Juergen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass es 49910 sein müssen, beim Vorwärtsüberlauf ?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu da erst umständlich ein Programm bemühen.

Der Assembler kann solche Konstanten doch prima selber ausrechnen
(32Bit integer):
.nolist
.include "m8def.inc"
.list

.equ    xtal = 4000000                  ;4MHz
.equ    presc = 256                     ;prescaler
.equ    relval = -(xtal / presc)

        ldi     r16, high( relval)
        out     TCNT1H, r16             ;high byte first !
        ldi     r16, low( relval)
        out     TCNT1L, r16


Und in C gehts ähnlich mit #define.


Peter

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul arbeitet aber vermutlich weder mit Assembler noch mit C.

;-)

...

Autor: uwegw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes
...Paul arbeitet aber vermutlich weder mit Assembler noch mit C.

Stimmt. Paul arbeitet ausschließlich mit Bascom. :-)
(In der größten Not flicht er ein Stück Assembler ein, wobei die Suche
nach den entsprechenden Befehlen länger dauert, als das eigentliche
Programm zu schreiben). Außerdem ist Paul ein Autodidakt, der sich
alles, was er über MC weiß, durch Wälzen von Büchern und durch das
Netz angeeignet hat. Paul ist schon ein ziemlich alter Zausel, der sein
Handwerk noch mit der Röhrentechnik (z.B. AZ11) begonnen hat.

Jetzt ist er froh, daß er für seine Belange zu gebrauchende Programme
schreiben kann.

GRINS

Mfg Paul

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul:
Ich weiß. Es sollte auch keine Diskriminierung sein.

Auch ich habe mit Röhren begonnen, allerdings mit ECC83 und EL34, also
ein paar Jährchen später. Auch die "Autodidakt-Jacke" zieh' ich mir
an, obwohl ich in Schule und Berufsausbildung ein paar Grundlagen
mitbekam. Mit BASCOM habe ich allerdings meine Probleme. Meine ersten
AVR-Programme waren zeitkritisch, da brauchte ich (trotz
BASIC-Grundwissen in mehreren Dialekten) ASM, weil ich halt Takte
zählen musste. Und dabei habe ich festgestellt, dass der
AVR-ASM-Befehlssatz sehr verständlich und vor allem sehr eindeutig ist.
Ich brauche nicht spekulieren, wie der Hochsprachenbefehl das umsetzen
könnte, sondern habe die Übersicht über jeden Takt, jedes Byte SRAM,
jedes Register, jedes Bit... Für manch Einen mag das lästig sein, ich
finde es gut so.

Ich finde es z.B. einfacher, wenn ich ein Hardwarefeature (z.B. Timer)
initialisieren will, im Datenblatt die entsprechenden I/O-Register und
deren Bits herauszusuchen und mittels IN, OUT.. darauf zuzugreifen, als
jedesmal die entsprechenden Parameter für die CONFIG-Anweisungen
zusammensuchen zu müssen.

Aber das ist alles Ansichtsache.

Frohes Schaffen, Bit- & Bytebruch...
...HanneS...

Autor: Werner A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgend jemand im Forum hatte doch mal angefangen einen Ini-File
Generator zu schreiben und Bilder davon gezeigt. Der hat die XML?
Datenblätter eingelesen und im Program verwendet. Ich hab schon nen
bischen gesucht, komm aber nicht mehr darauf, wie der thread hieß.
Vielleicht weiß ja jemand noch, wie das hieß.
Werner

Autor: olfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes
Nein, nein; ich weiß schon, wie Du das gemeint hast. :-))
Aber ich halte mich an das Sprichwort vom Schuster und seinem
Leisten.

MfG Paul

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul,

"Stimmt. Paul arbeitet ausschließlich mit Bascom. :-)"

Aber vielleicht kann man ja auch unter Bascom konstante Ausdrücke
definieren. Was sagt denn die Bascom-Doku dazu ?

Sowas braucht man schließlich alle Nase lang.

Für mich war Bascom nie ein Thema, da ich schon C kannte, lange bevor
es AVRs gab.


Jaja, die gute alte AZ11. Wurde oft von mir durch 2*SY210+100Ohm
ersetzt, wenn se hin war.
Dann noch die tauben 16µF durch 200µF aus alten Fernsehern ersetzt und
die Radios spielten besser als neu (absolut kein Brummen mehr).

Die UEL51 war aber auch ne klasse Röhre, wurde in 1-Röhren-Audions
verbaut. Als Doppel-Pentode gabs später nur noch mal die PFL200.


Peter

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Freilich kann man mit CONST in Bascom auch Konstanten festlegen. Ich
weiß aber nicht, worauf Du hinauswillst.

Mein Problem (und sicher nicht nur meins): Wenn mein Timer nicht
"reicht", muß ich in der Interruptroutine noch eine Variable
hochzählen lassen und dann habe ich die Zahl der Interupts in der
Variablen stehen. Jetzt gibt es ja nahezu unendlich viele
Möglichkeiten, mit Hilfe des Prescalers und dem Vorladen des Timers
und der Hilfsvariablen, den Takt zu erzeugen. Wenn man das alles per
hand durchrechnen will, wird man "weich".

Übrigens freue ich mich darüber, daß auch Du schon mit Röhren
"gebaut" hast und nicht so ein "Jungschnösel" (nicht hauen!)
bist.

MfG Paul

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul

"Jetzt gibt es ja nahezu unendlich viele
Möglichkeiten, mit Hilfe des Prescalers und dem Vorladen des Timers
und der Hilfsvariablen, den Takt zu erzeugen. Wenn man das alles per
hand durchrechnen will, wird man "weich"."


Nö, es besteht überhaupt kein Grund "weich" zu werden. Das Stichwort
heißt "Rechnen mit gebrochenen Zahlen".

Das Prinzip findest Du hier:

http://www.mikrocontroller.net/forum/read-4-57760.html#new


Peter

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul:
Was Peter meint sind Makros. Das sind Preprozossor-Anweisungen, die
einer Textersetzung gleichkommen.
Mit Hilfe solcher Anweisungen kann man Berechnungen von Konstanten dem
Compiler überlassen, der dann das Ergebnis überall dort einsetzt, wo
der Makroname auftaucht (oder macht das der Preprozessor? Auf jeden
Fall passiert das, bevor das Programm im Controller landet).
Peter hatte das ja schon für Assembler beschrieben. In C geht es
genauso.
Ob Bascom sowas auch unterstützt, weiß ich nicht.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul

Da bin ich überfragt. Aber ich entsinne mich, daß in der Zeitschrift
"Funkamateur" vor Jahren mal eine Artikelserie über AVR von Fred
Ziebell drin war. Der hatte damals das Problem in ein Programm für den
PC gefaßt. Leider finde ich das nirgends mehr.

@Peter
Danke für den Link. Das Prinzip kannte ich. Ich werde mal sehen, ob
ich das über Open Office in ein Arbeitsblatt "würgen" kann.

MfG Paul

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.