Forum: Mikrocontroller und Digitale Elektronik Avr-Timer Reloadwerteberechnung


von Paul Baumann (Gast)


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

von Paul Baumann (Gast)


Lesenswert?

Hat sich erledigt, habe hier was gefunden.

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

MfG Paul

von Juergen Schuhmacher (Gast)


Lesenswert?

Kann es sein, dass es 49910 sein müssen, beim Vorwärtsüberlauf ?

von Peter D. (peda)


Lesenswert?

Wozu da erst umständlich ein Programm bemühen.

Der Assembler kann solche Konstanten doch prima selber ausrechnen
(32Bit integer):
1
.nolist
2
.include "m8def.inc"
3
.list
4
5
.equ    xtal = 4000000                  ;4MHz
6
.equ    presc = 256                     ;prescaler
7
.equ    relval = -(xtal / presc)
8
9
        ldi     r16, high( relval)
10
        out     TCNT1H, r16             ;high byte first !
11
        ldi     r16, low( relval)
12
        out     TCNT1L, r16


Und in C gehts ähnlich mit #define.


Peter

von Hannes L. (hannes)


Lesenswert?

Paul arbeitet aber vermutlich weder mit Assembler noch mit C.

;-)

...

von uwegw (Gast)


Lesenswert?


von Paul Baumann (Gast)


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

von Hannes L. (hannes)


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

von Werner A. (Gast)


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

von olfi (Gast)


Lesenswert?


von Paul Baumann (Gast)


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

von Peter D. (peda)


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

von Paul Baumann (Gast)


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

von Peter D. (peda)


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

von inoffizieller WM-Rahul (Gast)


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.

von Paul Baumann (Gast)


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

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.