Bascom Timer1 mehrfach nutzen

poldi

Neues Mitglied
26. Juni 2013
7
0
0
Sprachen
Hallo Bascom Profis,

ich habe da eine Frage zum Timer1 (Atmega128) , bei der ich nicht mehr weiter komme. Ich brauche den Timer1 für eine Zeitbasis
zum einlesen eines Windsensors. Funktioniert. Alle 24 Stunden möchte ich über einen DCF77 Empfänger meine DS1307 Uhr synchronisieren,
was ca. 2-3 Minuten in Anspruch nimmt (habe guten Empfang ). Dazu benötige ich aber auch den Timer1. Gibt es eine Möglichkeit
dem Timer1 beizubringen, wieder als Zeitbasis weiter zu arbeiten? Die Arbeit macht er ja nacheinander und nicht parallel. Ich weiss, der
Atmega128 hat vier Timer, aber später sollte das ganze auf einem Atmega328 laufen, und der hat nur drei Timer .

MfG

poldi
 
Hallo Poldi!

Einen Timer im laufenden Programm zu ändern und temporär für zwei verschiedene Dinge zu nutzen ist generell nicht das Problem.

Ich bin aber der Meinung, sobald du in BASCOM die Port-Angabe für DCF77 machst, wird der Timer1 automatisch dafür verwendet und die Verwendung lässt sich auch nicht temporär abstellen.
Aus diesem Grunde würde ich sagen, dass deine Idee so nicht funktionieren wird.

Abhilfe kannst du damit schaffen, dass du die DCF77-Routinen von rn-wissen.de verwendest (dcf77_soft.bas).
Mit den Routinen kannst du auch Timer2 für DCF77 benutzen. :wink:

Eine weitere Möglichkeit könnte sein, dass du direkt die Timer-Register des AVR`s ansprichst und entsprechend umkonfigurierst.

Was allerdings dann die laufende DCF77-Routine und deine Softclock im Programm davon hält, dass Timer1 die meiste Zeit einen völlig falschen Takt liefert, kann ich nicht sagen.
Ich vermute aber, dass deine Uhr dann keine sinnvolle Zeit mehr anzeigen wird. :wink:


Wie also schon erwähnt......
Sieh dir die DCF77_Soft-Routinen bei rn-wissen.de einmal an und stell dein Programm ggf. danach um.
Ich persönlich verwende die Routinen inzwischen sogar häufiger als die BASCOM-LIB. :cool:


Grüße und viel Erfolg,
Cassio
 
Eben, der Timer kann das alles sicher parallel - die Bascom-Konfiguration schränkt Dich aber sicher ein.
Wie die DCF-libs den Timer nutzen, habe ich mir noch nicht angesehen. Stellt die Dir dann keine nutzbare Zeitbasis bereit?
Was Du da konkret brauchst, hast Du ja auch noch nicht gesagt.
Was ist mit den anderen beiden Timern des geplanten 328?
...
Eine weitere Möglichkeit könnte sein, dass du direkt die Timer-Register des AVR`s ansprichst und entsprechend umkonfigurierst.
...
Man könnte das ganze ja mal reassemblieren, und nachsehen, was Bascom bzw die lib mit dem Timer anstellen... und dann vielleicht die I/Os manipulieren.
Dabei kommts dann aber auch drauf an, für welchen Controller nun genau...
Der 128 hat ja bei dem Timer 3 OC-Units usw...
 
Hallo!

Nun ja, er bekommt von BASCOM aus eine fertige Möglichkeit jede Sekunde eine Subroutine aufzurufen.
In wie weit ihm das hilft muss er selber beurteilen.

Die elegantere Lösung ist aber immer noch die DCF_Soft.bas zu verwenden.
So muss in BASCOM keiner etwas "zurückverfolgen" und er hat alle Freiheiten. :wink:


Grüße,
Cassio
 
Die braucht doch aber auch einen Timer, oder? Nur eben flexibler bei der Auswahl?
Du willst doch einerseits 1s von 2s-Impulsen unterscheiden können, andererseits 100ms von 200ms.
Ein 8-Bit-Timer kommt bei 20MHz und 1024 Prescaler auf max 13ms -> müßte man also in IRQs mit Variablen strecken. Dann kann der Timer aber auch gleich die Zeitbasis für andere Sachen mitstellen...
Egal...

Ganz in SW ginge es natürlich auch, wenn andere IRQs solange abgeschaltet sind, und man Takte zählt. Dann müßte man aber erstmal solange Warten, bis man eine Minutenlücke hat, und dann die nächste Minute lang die bits durch Takte-zählen auswerten. Also 2 min warten. Halte ich für unpraktisch.

Mit Bascom-Bordmitteln bzw fertigen (und getesteten) Bibliotheken bist Du allerdings auf die vorhandenen Möglichkeiten festgelegt. Wenn die lib einen 8bitter akzeptiert, und Du für die RTC (und sectic) den 16bitter nehmen kannst, steht Dir für den Rest (Windmesser?) ja immer noch konfliktfrei der letzte 8bitter zur Verfügung...

OT: vielleicht wäre 'ne lib, die dcf77 und rtc mit getaktetem Subroutinenaufruf wie bei sectic - allerdings auch mit anderen Aufruffrequenzen - an einem 8bitter gebunden mal ein interessantes Projekt...
 
Hallo

besten Dank für die Antworten auf meine Frage. Allerdings muss ich doch erwähnen,
dass ich noch kein großer Hirsch in Sachen Programmieren bin. Aber eben,Not macht erfinderisch!
Ich habe das Problem gelöst, indem ich den Sekundentakt von meinem DS1307 IC als Zeitbasis
nutze und das ganze funktioniert auch. Nur schade, dass der Timer1 wegen den 2-3 Minuten pro
Tag blockiert ist.

Poldi
 
Ich habe das Problem gelöst, indem ich den Sekundentakt von meinem DS1307 IC als Zeitbasis
nutze.....


Hallo Poldi!

Du musst gar nicht die Sekunden-Basis der RTC nutzen........
Denn wie ich in Beitrag Nr. 4 schon geschrieben hatte, kannst du jede Sekunde eine Subroutine aufrufen lassen.
Stichwort für BASCOM-User: "Gosub = Sectic" in der Config-Zeile. :wink:

Du kannst der Subroutine aber auch einen anderen Namen geben als "Sectic", z.B. Hansi_Hase. :cool:
Jede Sekunde wird dann automatisch die Sub "Hansi_Hase" einmal aufgerufen.
Was du dann in der Sub machst bleibt dir überlassen.
Allerdings sollte die Abarbeitung der Sub recht kurz sein!


Grüße,
Cassio
 
Hi Cassio,

Du musst gar nicht die Sekunden-Basis der RTC nutzen........
Denn wie ich in Beitrag Nr. 4 schon geschrieben hatte, kannst du jede Sekunde eine Subroutine aufrufen lassen.
Stichwort für BASCOM-User: "Gosub = Sectic" in der Config-Zeile. :wink:

so wie ich das verstanden habe, hat er den ganzen Kram gemacht weil er den Timer 1 für was anderes benötigt hat und der sonst mit der Sectic belegt ist.

Gruß
Dino
 
Hi Dino!

Wenn ich das richtig verstanden habe, dann möchte er seine RTC einmal am Tag mittels DCF stellen.
Um dies mit BASCOM-Mitteln zu realisieren, muss er DCF aktivieren...... und dann ist der Timer1 weg.

Ist aber auch egal!
Warum sollten wir uns über bereits "gelöste" Ausgabenstellungen weitere Gedanken machen. :wink:


Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)