Quarz für ATTiny2313

kaninchen

Neues Mitglied
05. März 2009
30
0
0
Villmar
Sprachen
Hallo liebe Forenmitglieder,

ich möchte mit dem 2313 eine ziemlich genau gehende Uhr mit Bascom programmieren.
Die Uhr sollte nicht mehr als ein paar sekunden pro Tag abweichen.
Ich habe mir also überlegt, den 2313 mit einem 32,768 KHz Quarz zu betreiben.
Ist dies möglich, oder bekomme ich dann Probleme mit dem ISP?
Wie sage ich es BASCOM bei $crystal = ????????
Wenn die Uhr läuft möchte ich später 1 mal am Tag per DCF77 die Uhr stellen.
Diese Uhr soll später für meine Heizungssteuerung verwendet werden, will aber langsam anfangen und alles selbst entwickeln. Da ich mit ASM und C auf kriegsfuß stehe und die LIB dateien nicht entschlüsseln kann möchte ich halt alles in BASCOM realisieren.

Vielen Dank

kaninchen
 
Hallo Kanichen!

Zu aller erst möchte ich dich hier bei AVR-Praxis willkommen heißen! :ciao:

Nun schauen wir mal, was wir hier für dich tun können. ;)

Wenn die Uhr läuft möchte ich später 1 mal am Tag per DCF77 die Uhr stellen.

Wenn du mit dem DCF77-Signal deine Uhr synchronisieren möchtest, dann wäre der Uhrenquarz nicht notwenig, da BASCOM selbst nur eine der beiden Möglichkeiten unterstützt. Entweder, oder....

Ich bin aber auch der Meinung, dass du am Tiny2313 keine separaten Pins für den Uhrenquarz hast. Von daher musst ggf. einen anderen Controller nehmen, oder aber gleich auf DCF77 setzen. ;)

Die interne Uhr des Controllers (Softclock) kannst du sogar jede Minute mit dem DCF77-Signal abgleichen... sofern es sauber empfangen wurde. Dies erkennt das Programm aber selbstständig und bei fehlerhaften Signalen läuft die Uhr ganz normal weiter.

Diese Uhr soll später für meine Heizungssteuerung verwendet werden,

Möchtest du denn den 2313 später nur als Uhr für die Heizung nutzen, oder soll er auch noch andere Aufgaben übernehmen?

Wie möchtest du die Uhr denn später überhaupt nutzen? Ich denke mal, du benötigst doch mindestens noch ein Display und ein paar Taster für die Eingaben....

Ich habe das Gefühl, dass der 2313 dafür ein wenig klein sein könnte.

Beschreib doch mal etwas genauer, was du alles hinterher damit machen möchtest.

Schöne Grüße,
Cassio
 
Hallo,

erst mal vielen Dank für die nette Begrüßung und die sehr schnelle Antwort.

Die Uhr soll eine Zeitschaltuhr werden.
Sie soll Tag/Nachtschaltung, Zirkulation und Sommer/Winterbetrieb umschalten. Wobei die Sommer/Winter Umstellung nicht unbedingt notwendig ist.
Auch soll sie bei Fehlern und Datenspeicherung der Heizungssteuerung für den Zeitstempel sorgen, deshalb benötige ich die COM Schnittstelle. Die Steuerung an sich übernimmt dann ein ATMEGTA 2560.

Hier meine geplante Pinbelegung:

Pin Port Nutzung
1 PA2 Reset Taster
2 PD0 RXD COM1
3 PD1 TXD COM1
4 PA1 XTAL Quarz 32,768 KHz
5 PA0 XTAL Quarz 32,768 KHz
6 PD2 Tast1
7 PD3 Tast2
8 PD4 Out1 Sommer/Winter
9 PD5 Out2 Zirkulation
10 GND
11 PD6 Out3 Tag/Nacht
12 PB0 LCD db4
13 PB1 LCD db5
14 PB2 LCD db6
15 PB3 LCD db7
16 PB4 LCD E
17 PB5 MOSI/LCD RS
18 PB6 MISO/DCF77 Sig
19 PB7 UCSK/DCF77 Power
20 Vcc

Um einen genauen Sekundentakt zu bekommen möchte ich den 2313 mit dem 32,768 KHz Quarz versorgen. Mit dem Prescaler 256 kann ich Timer0 mit 127 vorladen und dadurch den Sekundentakt erzeugen. Sollte die Abweichung zu groß sein kann ich durch Erhöhen oder Erniedrigen der Timer Vorladung die Uhr anpassen.
Deshalb meine Frage, ob der ATTiny überhaupt mit dem 32,768 KHz Takt läuft, und ob ich die COM und ISP mit dieser niedrigen Frequenz ansprechen kann. Da ich ja nur den Timestamp über die COM übertragen möchte reicht eine geringe BAUD-Rate aus, nur wie groß ist diese dann?

Vielen Dank

kaninchen
 
Hallo ,

Um einen genauen Sekundentakt zu bekommen möchte ich den 2313 mit dem 32,768 KHz Quarz versorgen. Mit dem Prescaler 256 kann ich Timer0 mit 127 vorladen und dadurch den Sekundentakt erzeugen. Sollte die Abweichung zu groß sein kann ich durch Erhöhen oder Erniedrigen der Timer Vorladung die Uhr anpassen.
Deshalb meine Frage, ob der ATTiny überhaupt mit dem 32,768 KHz Takt läuft, und ob ich die COM und ISP mit dieser niedrigen Frequenz ansprechen kann. Da ich ja nur den Timestamp über die COM übertragen möchte reicht eine geringe BAUD-Rate aus, nur wie groß ist diese dann?
Warum das Ding mit 32768Hz betreibe ? Wenn man einen höheren Takt nimmt
(z.B. 3,2768MHz) kannst Du den Timer doch wesentlich feiner einstellen und
gerätst nicht in den Bereich der Rundungsfehler. Das Problem habe ich nämlich
gerade mit 20MHz Takt und 115kBaud RS232. Da ist man mit dem Vorteiler
entweder zu hoch oder zu niedrig. Und wenn Du noch was anderes außer Uhr
mit dem Ding machen willst, ist höherer Takt immer besser. Außer du willst
auf Teufel komm raus Strom sparen. Dann ist der niedrige Takt natürlich ok.

Und wenn man unbedingt ein 32kHz-Quarz benutzen will, dann würde ich für
die Feinjustierung nen Trimmerkondensator anbauen. Dann kannst Du die
Quarzfrequenz ziehen.

Gruß
Dino
 
Hallo zusammen!

Was mir dazu noch einfällt....

Wenn sowieso eine serielle Verbindung vom Tiny2313 zum Mega256 besteht.. warum soll der 256er dann nicht die Daten für die Uhr im 2313 liefern?

Man könnte ja mogeln und dem 2313 erzählen, er würde einen DCF77-Empfänger bekommen.... macht das aber einfach nicht. ;)
Damit läuft die Softclock im 2313 an, man hätte sogar eine SECTIC-Subroutine und könnte alle Uhrenfunktionen nutzen. :)

Um die Softclock auf den aktuellen Stand zu halten, würde ich regelmäßig die Uhrendaten vom Mega256 seriell rüber schieben.
Damit würden beide Controller auch ziemlich synchron laufen und kann trotzdem am 2313 einen besseren Quarz wählen.... z.B. den 14,xxx MHz für genauere Baudraten. ;)

Wäre das nicht auch ein Idee?

Gruß,
Cassio
 
Hallo ,

Wenn sowieso eine serielle Verbindung vom Tiny2313 zum Mega256 besteht.. warum soll der 256er dann nicht die Daten für die Uhr im 2313 liefern?

Man könnte ja mogeln und dem 2313 erzählen, er würde einen DCF77-Empfänger bekommen.... macht das aber einfach nicht. ;)
Damit läuft die Softclock im 2313 an, man hätte sogar eine SECTIC-Subroutine und könnte alle Uhrenfunktionen nutzen. :)

Um die Softclock auf den aktuellen Stand zu halten, würde ich regelmäßig die Uhrendaten vom Mega256 seriell rüber schieben.
Damit würden beide Controller auch ziemlich synchron laufen und kann trotzdem am 2313 einen besseren Quarz wählen.... z.B. den 14,xxx MHz für genauere Baudraten. ;)

Wäre das nicht auch ein Idee?
So etwas in der Art hab ich auch mal als Idee gehabt :D Auch mit Seriell aber
doch nicht normal Seriell. In irgendeiner alten ELO (glaube ich) haben die mal
ein RS232-Netzwerk gebaut. Dazu haben die beim Computer die TxD und RxD
der RS232 über Widerstand und Diode zusammen auf eine Leitung gebracht.
An diese leitung konnte man dann alle anderen PCs parallel anschließen. Das
hab ich damals mal mit meinem Amiga und nem anderen Amiga mit GFA-Basic
ausbprobiert. Läuft super ;) Man empfängt dadurch allerdings die selbst
gesendeten Daten auch wieder. Kann man aber filtern.

Ich hab mir das mal im Datenblatt der Megas angesehen. Man kann ja auch
mit 9-Bit senden. Wenn man dann Daten mit gesetztem 9ten Bit als Adresse
für die anderen ATmega-Slaves verwendet und die normalen Daten mit
gelöschtem 9ten Bit, dann kann man sich ein komplettes RS232-Netzwerk
aufbauen. Es reicht wegen der Verknüpfung der Rx+Tx-Daten eine Ader und
GND. wenn man jetzt ein zweiadriges abgeschirmtes Kabel verwendet, dann
kann man die Slaves sogar noch energetisch günstig über die Zentrale
versorgen.

Um wieder zum Thema zurückzukommen ... :D
Jetzt kann die Zentrale mit DCF77 und Echtzeituhr betrieben werden.
Sozusagen als zentraler Zeitserver von dem sich alle anderen synchronisieren.
Wenn jetzt ein Slave durchstartet, dann kann er eine Zeitabfrage an den
Master schicken, der ihm die Zeit zur Verfügung stellt. Würde ich genial
finden :D

Da kommt noch ne Menge Arbeit auf uns zu :rolleyes:

Gruß
Dino
 
Ich hab mir das mal im Datenblatt der Megas angesehen. Man kann ja auch
mit 9-Bit senden.

Hallo Dino!

Ein normal Byte sollte zum Senden doch völlig ausreichen...

Ich würde erst eine "Codenummer" senden, damit der "Empfänger" weiß welche Daten folgen und dann abschnittsweise die Bytes für Uhr und Datum.... abschließend eine andere "Codenummer". Fertig! :D

Das Timing für die Abschnitte könnte man auch außer Acht lassen, wenn man dann mit "Printbin" und "Inputbin" arbeiten würde.

Somit kann man die ganz normalen Befehle für das Senden und Empfangen der seriellen Daten benutzen und muss keine Sonderlösung zaubern.


Warten wir aber erst mal ab, was das Kaninchen überhaupt von der Lösung hält. ;)

Gruß,
Cassio
 
erster Uhrentest mit LCD-Ausgabe in ASM

Hallo,
kurze Einmischung.
Würde vorschlagen, erst einmal überhaupt irgendeine Uhr zum Laufen zu bekommen.
Dazu müssen beim ASM-Prog unten nur noch die Ports entsprechend "umkonfiguriert" werden.
Also, mit dem ATiny 2313 läuft "meine" Uhr schon ziemlich lange.
Habe ein 4 MHz externes Quarz auf das STK500-Board gesteckt, den Jumper
für Clock entsprechend gesetzt. (Beim ersten Fuses-Setzen den Prescaler von default 1/8 rausgenommen.)
Dann konnte auf einfachste Art die Ganggenauigkeit "fine"-getunt werden, indem die CTC-Timer-Register-Werte verändert wurden.
Bei nur 32,xxx kHz-Quarz geht das IMHO so nicht. Wie sollte die Baudrate von Standard 9k6 8N1 denn eingestellt werden, wenn bei 4 MHz Takt der Wert schon sooo niedrig ist bei ca. 25!!)
Daher auch dem bereits erfolgten Vorschlag nachgehen, es mit Timer im
Compare-Match-Modus einmal zu versuchen.

Also LCD-Routine bereits im Vierbitmodus ohne Busy-Flag-Abfrage und noch ein paar "Konversions"-Unterprogramme für die Ausgabe integriert.
OK. Ist ASM, daher "Zwischeneinwurf". Wie man es in BASCOM realisiert,
könnte noch jemand erklären hier.


Nur so eine Test-Idee....

Gruß von Oskar01

P.S.: Auch eine Routine für den Empfang von RS232-Daten hatte ich ausprobiert.
Hierbei "echot" das Programm . Also beim Hyperterminal kommt sekündlich
die Uhrzeit, dann asynchron einfach irgendeine Taste
auf dem Keybord drücken, und es erscheint der ASCII-Wert, bereits in Hex umgerechnet,
also zum Bleistift Meßwert Buchstabe A = 41 und so weiter auf dem LCD und Hyperterminal.
Ist aber im ASM-Prog unten "noch" nicht enthalten, möchte auch nicht gleich mit der Tür ins Haus fallen.
Idee: Den Analogwandler (Thermometer) mit separatem ATiny2313 aufbauen, der mir den Wert per RS232 ausgibt. Dazu noch eine Mimik für die Spannungsversorgung (Integrator bzw. Differenziergled), womit man mit 2 Leitungen plus Abschirmung auskäme.
Der zweite ATiny2313 dient als Empfänger und steuert mir dann im "Innenraum" auch das LCD an. Zum Test auch auf den MAX232 verzichtbar.
 

Anhänge

  • Uhr_CTC.asm
    16,9 KB · Aufrufe: 8
Hallo liebe Forengemeinde,

ich dachte an den 32,768 KHz Quarz, weil in eingen Foren am ATMEGA am TOSC ein solcher zusätzlich für die Uhr angeschlossen wurde.
Stromsparen ist für mich nicht so wichtig.
Der 2560 wird genug belastet. Er wird alle 16 ADC benutzen, 4 Pumpen und 4 Ventile steuern, 4 20x4 LCD ansteuern (Anzeige Heizraum und Wohnzimmer), einige Taster und Schalter abfragen, Daten und Fehler auf SD-Card speichern. Er muss den Wassergeführten Holzkessel steuern, 3 800 Liter Heizwasserboiler laden, den Heizkreis steuern, Warmwasserboiler laden, die Solaranlage steuern und 4 Elektroheizstäbe.
Ich glaube damit hat er genug zu tun. Wenn jetzt noch eine Uhr im Sekungdentakt zu steuern ist glaube ich das der 2560 schlapp machen würde.
Ausserdem wird die Software unübersichtlich.
Bin auch schon am überlegen ob ich die Messaufgaben auf mehrere ATMEGA8 auslagere und per COM (oder wie?) abfrage.

So jetzt wisst Ihr was ich in den nächsten Monaten vor habe.

Nach Euren aussagen werde ich nun einen 16 MHz Quarz nehmen mit prescaler 1024, da brauche ich dann 15625 Durchläufe für für 1 Sekunde. Werde den Timer1 verwenden und mit 49911 (65536-15625) vorladen.
Ich hoffe das alles richtig zu interprtieren.
Ob die 2KB Flash für den 2313 reichen weis ich noch nicht.
Da die ganze Steuerung im Keller sitzt, weis ich noch nicht wie gut die DCF77 arbeiten wird. Mein Funkwecker von Conrad empfängt dort nicht immer, deshalb brauche ich eine ziemlich genaue Uhr mit gelegendlichem Abgleich.

Ich habe mich auf BASCOM festgelegt weil ich mit Zeigern und Registern immer meine Probleme habe. Meine Programmiererfahrung habe ich in Delphi, wo ich Datenbanken und Messgeräte verbunden habe und Auswertungen in Officeprodukten übertragen habe.

Vielen Dank

kaninchen
 
Hallo Kaninchen!

Sorry, aber ich werde aus deinen Fragen und deiner Beschreibung nicht schlau!

Nicht dass ich nicht verstehen würde was du vor hast.......
Es ist einfach die Kombination aus "Anfängerfragen" und "Profi-Angaben". ;)


ich dachte an den 32,768 KHz Quarz, weil in eingen Foren am ATMEGA am TOSC ein solcher zusätzlich für die Uhr angeschlossen wurde.

Das ist ja auch richtig.... an den TOSC1 und TOSC2 Pin wird ein 32,768kHz "Time-Oszillator" angeschlossen!
Nur leider hat der Tiny2313 gar keine separaten Pins für den 32kHz Quarz. ;)


Somit sind wir wieder am Anfang!
Please go to the Topic! :D

16 MHz Quarz nehmen mit prescaler 1024, da brauche ich dann 15625 Durchläufe für für 1 Sekunde

Nun ja.... du könntest auch mit einem Prescaler von 256 arbeiten und den 16bit-Timer dann mit 3036 laden.....
Viele Wege führen nach Rom. ;)

Wenn jetzt noch eine Uhr im Sekungdentakt zu steuern ist glaube ich das der 2560 schlapp machen würde.

Das glaube ich persönlich nicht..... aber Glauben können wir bekanntlch wohl alle besser in der Kirche. ;)


Er wird alle 16 ADC benutzen, 4 Pumpen und 4 Ventile steuern, 4 20x4 LCD ansteuern

Ich habe mal eine bescheidene Frage....
Hast du den Schaltplan schon fertig gezeichnet und dir Gedanken über zusätzliche Treiber-ICs, Schnittstellenanbindungen sowie zur Pinbelegung gemacht?
Welche Displays möchtest du denn dafür verwenden? Sollen alle vier LCDs das Selbe anzeigen, oder gar verschiedene Informationen?

Stell doch einfach mal deine Unterlagen hier ein, das erleichtert vieles! ;)

Gruß,
Cassio
 
Hallo,

kompletter Schaltplan folgt!
Ich bin mir nicht sicher, gibt es denn für jeden ATMEGA die Clock (config clock) Funktion?
Auch beim ATTiny2313?
Ist das eigentlich schon eine Komplette Uhr?
Bin jetzt etwas verwirrt.

Vielen Dank.

kaninchen
 
Hallo,

nun folgt der Plan der Heizung.

Hier wird ersichtlich wie komplex später alles werden wird.
Was ich noch vergessen habe: In jedem Speicher ist noch ein Elektroheizstab.
Eine elektrische Schaltzkizze folgt noch.

Vielen Dank

kaninchen
 

Anhänge

  • Plan Heizung.SKF (2).pdf
    18,8 KB · Aufrufe: 77
Hallo,

und jetzt noch die Schaltskizze.
Hab natürlich wieder was vergessen: ein paar Taster und Schalter für den ATMEGA2560

Vielen Dank

kaninchen
 

Anhänge

  • Schaltskizze.SKF (1).pdf
    22,4 KB · Aufrufe: 27
Hallo,

ich glaube bereits eine Antwort für die RTC gefunden zu haben. In der Datenbank sehe ich das der 2313 keine RTC hat, und die ATMEGA haben eine.
Ich werde also einen ATMEGA8 nehmen statt dem 2313. Da reicht auch mit Sicherheit der Flash und die I/O Pins.

Viele liebe Grüße

kaninchen
 
Hallo Kaninchen!

Warum errichtest du im AVR-Projekte Bereich nicht einfach ein neues Thema, bei dem es dann auch nur um deine Heizungsregelung dreht?

Ich denke, das Projekt ist doch etwas umfangreicher und wird einige Zeit.... und Fragen.... in Anspruch nehmen. ;)
Da ist es dann auch viel besser aufgehoben.

Du kannst dort deine Schaltbilder noch einmal einstellen und auch erklären.

Nimm doch beim nächsten Mal einfach JPG oder GIF Bilder, dann kann man sie auch gleich betrachten und muss nicht extra das PDF herunter laden. ;)

Die Blockschaltbilder sind ja schon ganz gut durchdacht.....
Bin schon auf deinen Anschlussplan gespannt.
Welche Software besnutzt du denn dafür? Eagle, oder sPlan, oder...


Gruß und bis später.... im AVR-Projekte Bereich. ;)

Cassio
 
Hallo,

ich werde jetzt ein neues Thema unter Projekte/AVR-Projekte/Heizungssteuerung für Holzkessel und Solar eröffnen.
Meine Frage hierzu:
Soll ich meine Fragen dann dort stellen, oder mir dann immer ein passendes Thema suchen?

Vielen Dank

kaninchen
 
Hallo Kaninchen!

Wenn du einen eigenes Thema speiziell für deine Heizungsregelung erstellst dann kannst du dort natürlich auch alle Fragen, Pläne und weiteres posten, die mit dem Thema zusammen hängen.

Es geht ja nur darum, dass jeder Leser einen passenden Bezug hat und das Thema besser von allen gefunden wird.


Gruß,
Cassio
 
Hallo Kaninchen!

ich bin etwas verwundert über die Menge an Aufgaben für einen einzigen Microcontroller. Du solltest bei Deinem Projekt zu aller erst beachten, wie stabil und sicher das laufen soll. Sollte Dein Hauptprozessor ausfallen (hängen bleiben), was passiert dann? Ich habe ebenfalls ein umfangreicheres Projekt allerdings mit einen PIC-Controller aufgebaut und unter BASIC Programmiert. Hierbei ist z.B. ein Watchdog oder Brownout nicht möglich. Dies führte dazu, das die sonst stabil laufende Hardware an kalten Wintertagen ausstieg.
 

Ü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)