www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM Timer 3,6864Mhz -> 0,01 sec (AT90S4433)


Autor: Achim Hoffmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe einen Countdown-Schalter mit einem AT90S4433 gebaut. Der Quarz
hat eine Frequenz von 3,6864Mhz. Jetzt möchte ich die Zeit in 0,01s
Schritten einstellen können.
Wie muss ich den Timer0 einstellen?
Ich habe verzweifelt Gegoogelt aber nichts gefunden.
Vielen Dank im Voraus,
Achim Hoffmann

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo liegt dein Problem? Mit dem Vorteiler durch 256 teilen, beim Rest die
letzten zwei Stellen weg und du hast den Wert für den Timer.

Autor: Achim Hoffmann (el-achimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hubert,
Mein Problem sind die Grundlagen. Ich verstehe die Berechnung nicht um
auf meine 0.01sec zu kommen.
Viele Grüße,
Achim

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
3,6864 MHz=1/3,6864µs. Für 10ms brauchst du also 36864 Takte. Mit
Vorteiler 256 also einen Reload-Wert von -144. (144*256=36864)

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du möchtest aus den 3686400 Hz 100Hz machen, 1/0,01 = 100.
Du musst im Datenblatt nachsehen welche Teiler sind fix eingebaut und
dann mal probieren, in dem Fall durch 256, das ergibt dann 14400. Wenn
du diese Zahl in den Timer einstellen könntest würde jede Sekunde ein
Interrupt ausgelöst und du hättest 1 Sekunden Schritte, wenn du 144
eingibst dann hast du 0,01 Sek.
Also 0,01 Sek sind 100Hz und die vorhandene Frequenz mit den
vorgegebenen Teilern teilen bis die 100Hz herauskommen.
Besser kann ich es dir leider nicht erklären.

Autor: Achim Hoffmann (el-achimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das richtig verstehe, lasse ich meine Interruptroutine 144 mal
nix tuhen um danach die Befehle zu verarbeiten?

Ontimer0:
   incr dummy
   if dummy = 144 then
      dummy = 0
      Decr Zeit3
      If Zeit3 = 0 And Zeit2 > 0 Then
         Zeit3 = 99
         Decr Zeit2
         If Zeit2 = 0 And Zeit1 > 0 Then
            Zeit2 = 99
            Decr Zeit1
         End If
      End If
   end if
Return

So ungefär??
Grüße,
Achim

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, du musst im TCCR0 den Teiler durch 256 einstellen und dann im
Timer Register TCNT0 den entsprechenden Wert, in diesem Fall 256 - 144=
112 eintragen, starten, bei 256 kommt der Interrupt, Timer stoppen, 112
eintragen, starten usw. Der Interrupt kommt alle 0,01 sek.
Mit dem Timer1 ginge das schöner, da kannst du einen
Compare-Match-Interrupt auslösen.

Autor: Achim Hoffmann (el-achimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank.
Das war die Lösung für mein Problem!
Habt Ihr noch einen Tipp für ein gutes Referenzhandbuch für BASCOM?
Viele Grüße,
Achim

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Achim,

ich kann Dir zwei Bücher empfehlen:

Roland Water --- Microcontroller Lehrbuch
Claus Kühnel --- Programmieren der AVR RISC uC

Zweites ist für den Fortgeschrittenen meiner Meinung nach
interessanter. Es werden deutlich mehr Anwendungsbeispiele
genannt....die dafür etwas knapper. Walter beschreibt mehr die
Grundlagen.

Kannst Du mir evtl. mit dem Quelltext zu deinem o.g. Projekt aushelfen.
Ich muss in Bascom eine Stoppuhr mit 0,01sec Auflösung realisieren.

Viele Grüße
Daniel

Autor: Achim Hoffmann (el-achimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,
mail mir mal an:
info@elachimo.de
Was soll die Uhr denn können?
Viele Grüße,
Achim

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.