Bitte nur eine RTC Lösung!

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: Bitte nur eine RTC Lösung!

Beitrag von Rainer »

drohne235 hat geschrieben:
und zieht dort eine einheitliche Schnittstelle zwischen dem Betriebssystem und der Hardware ein.
Das genau macht das IOS. :) Und genau da gehören deine Time-Routinen rein. So funktioniert es ja prinzipiell schon. Wenn man mit print eine Zeichenausgabe macht, kann dem Programm egal sein ob in Bellatrix der TV oder der VGA-Treiber läuft. Und genau so mit dem RTC - solange man den über die IOS-Routinen anspricht, kann es der Anwendung egal sein wo genau der Chip sitzt. Das einzige was noch zum Glück fehlt ist eine Möglichkeit zur bedingten Compilierung, aber vielleicht haben wir ja mal einen SPIN-Compiler auf dem Hive der das kann.
umm .. da komme ich jetzt gerade nicht mit. Was hat bedingte Compilierung mit dem Problem des RTC zu tun ?
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Bitte nur eine RTC Lösung!

Beitrag von drohne235 »

Was hat bedingte Compilierung mit dem Problem des RTC zu tun ?
Direkt hat das nichts damit zu tun, aber bei der Handhabung der verschiedenen Lösungen wäre es praktisch. So könnte man die verschiedenen RTC-Lösungen im IOS einarbeiten und einfach per Flag und bedingter Compilierung auswählen. Jetzt muß man umständlich auskommentieren, oder verschiedenen Dateien verwenden.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
DJLinux

Re: Bitte nur eine RTC Lösung!

Beitrag von DJLinux »

Hallo Janaha,
erst einmal Danke für das Layout.

Du weist schon das der DS1307 ein 5V Baustein ist oder hast Du eine spezielle 3.3V Version ?

So bald VCC unter 3.75V (1.25*3VBAT =3.75) geht benutzt der Chip die Battrie (wenn der BAT Pin nicht auf GND liegt) soll heissen das an 3.3V der Chip ständig von der Batterie versorgt wird.

Sorry wenn ich da falsch liege aber das habe ich aus dem Datenblatt entnommen.

Grüsse Joshy
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: Bitte nur eine RTC Lösung!

Beitrag von TuxFan »

Hallo!
Entschuldigung wenn ich mich hierauf melde:
DJLinux hat geschrieben:.......der DS1307 ein 5V Baustein ist .........
Aufgrund deines Posts habe ich auch mal im Datenblatt nachgeschaut. Es stimmt es ist ein 5V Baustein.
Als Ersatz könnte der DS1338-33 (3,3V) dienen :
https://www.it-wns.de/themes/kategorie/ ... 5&source=2
gibt es aber nur als SMD. Scheint aber auf dem ersten Blick ins Datenblatt kompatibel mit dem DS1307 zu sein.
Dürfte nicht all zu schwer sein diesen auf einen DIP8 Adapter zu löten. Muß aber jeder selber wissen ob er den einsetzen will.
In diesem Shop gibt es auch einen Modulbausatz für dies IC.
Gruß Günter
Wunder gibt es immer wieder.......
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: Bitte nur eine RTC Lösung!

Beitrag von Rainer »

Ich werde wohl sowieso bei meinem DS1340 bleiben, da ich den schon drin habe und er läuft.

Zum DS1307:
Auf Janahas EEPROM-Board wirds wohl egal sein, da er 5V auf der Platine abgreift soweit ich das noch in Erinnerung habe.
Aber es ist natürlich richtig .. der Chip ist 5V

Als Ausweichtyp könnte man auch den Maxim DS1302 nehmen. Den gibts auch als DIP8
http://datasheets.maxim-ic.com/en/ds/DS1302.pdf

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Janaha
Beiträge: 213
Registriert: Fr 29. Mai 2009, 08:30

Re: Bitte nur eine RTC Lösung!

Beitrag von Janaha »

Rainer hat geschrieben:Ich werde wohl sowieso bei meinem DS1340 bleiben, da ich den schon drin habe und er läuft.

Zum DS1307:
Auf Janahas EEPROM-Board wirds wohl egal sein, da er 5V auf der Platine abgreift soweit ich das noch in Erinnerung habe.
Aber es ist natürlich richtig .. der Chip ist 5V

Als Ausweichtyp könnte man auch den Maxim DS1302 nehmen. Den gibts auch als DIP8
http://datasheets.maxim-ic.com/en/ds/DS1302.pdf

Gruß.
Rainer
Iks, mist.

Das kommt davon wenn man die Datenblätter nicht vollständig liest. Hatte nur bei den absolut Maximum ratings gesehen, das der Chip -0,5 bis +7.0 Volt aushält und dann einfach mal angenommen das 3,3 Volt völlig ok sein sollten. Naja, nichts was sich nicht mit einem kleinen Patch und nem Stück draht hinbekommen läßt.

Der Chip sollte die ihm zustehende 5 Volt versorgung noch bekommen und den Bus muss man evtl. mit einer Zener Diode davon abhalten auf mehr als 3,3 Volt hoch zu fahren. Es sollte eigentlich ohne gehen aber ich muss mir das mal bei gelegenheit genauer anschauen. Das es sich um einen 5 Volt Baustein handelt ist nicht weiter tragisch. Beim Empfangen von Datem vom Hive wird er den 3,3 Volt High Pegel Problemlos erkennen. Und wenn den Baustein antwortet sollte es eigentlich auch Problemlos gehen. Evtl. muss halt noch ne Zernerdiode her um die Spannung auf kleiner gleich 3,3 Volt zu halten. Wichtig ist mir an dem Baustein nur das man in recht leicht und günstig in DIL8 Bauweise beschaffen kann. ( z.B. bei Reichelt )

Ich habe mal schnell eine neue Version erstellt und hier mit angehängt. Der DS1307 Chip läßt sich mit der kleinen Modifikation dann auch mit seinen ihm zustehenden 5 Volt versorgen. Die Zener Diode auf der Datenleitung sollte den Chip davon abhalten die Datenleitung über 3,3 Volt hinaus zu belasten. Evtl. ist die Diode nicht unbedingt nötig, habs noch nicht ausprobiert. Auch habe ich den Hive- Anschluss gedreht, so das sich die kleine Platine leicht über ein Flachbandkabel links neben dem Hive anbringen lassen sollte.

Grüße
Janaha
Dateianhänge
Hier das Upgedatete Schema.
Hier das Upgedatete Schema.
Upgedatete Platine.
Upgedatete Platine.
eeprom_uhr_adapter_v1_1.zip
Update, Fehlerkorrektur.
(34.6 KiB) 472-mal heruntergeladen
DJLinux

Re: Bitte nur eine RTC Lösung!

Beitrag von DJLinux »

Hallo Janaha
wenn man nur eine Z-Diode nimmt die bei jedem High Pegel "eingreift" sind das dann immer noch saubere Rechtecke ?

Grüsse Joshy

PS. Ich hoffe Du hast Dir die Prop's nicht mit 100-400KHz. 5V Pegel beschädigt.
Janaha
Beiträge: 213
Registriert: Fr 29. Mai 2009, 08:30

Re: Bitte nur eine RTC Lösung!

Beitrag von Janaha »

DJLinux hat geschrieben:Hallo Janaha
wenn man nur eine Z-Diode nimmt die bei jedem High Pegel "eingreift" sind das dann immer noch saubere Rechtecke ?

Grüsse Joshy

PS. Ich hoffe Du hast Dir die Prop's nicht mit 100-400KHz. 5V Pegel beschädigt.
Erlich gesagt habe ich da keine Ahnung, ich bin eingentlich nur Programmierer.

Aber ich habe da mein einen kleinen USB- Atmel Programmer frei nach einer Anleitung aus dem Netz nachgebaut. Der Programmer verwendet einen Atmega32 (5Volt), der direkt mit dem USB- Bus koppelt ist. Auf den Datenleitungen verwendet der Programmer den gleichen Trick und der Funktioniert nun seit einiger Zeit bei mir schon total Problemlos. Auch der USB- Bus auf dem C64>Hive Keyboard Adapter verwendet diese beiden Dioden zur Spannungsanpassung, auch der läuft bei mir Problemlos. Daher habe ich das einfach mal auf den I2C- Bus angewendet, in der Hoffnung das das so richtig war.

Da beim I2C- Bus der Takt von Master kommt und nur die Datenleitung vom Slave verändert werden kann, habe ich da nur auf der Datenleitung eine Diode eingezogen. Im moment vermute ich sogar das die Diode überflüssig ist. Der I2C- Bus wird eigentlich durch Pullup- Widerstände auf dem 3,3 Volt High Pegel gehalten und kann durch die angeschlossenen Bausteine eigentlich nur richtung Low- Pegel gezogen werden. Die Diode hab ich daher nur zur Vorsicht schonmal vorgesehen, gehe aber noch davon aus das man die Weglassen darf. Kann das hier evtl. mal ein Fachman bestätigen ?

Und die Propeller haben garantiert keine 5 Volt abbekommen, da ich den RTC- Chip fälschlicherweise auch auf 3,3 Volt angeschlossen hatte. Hm ich werd das auch nochmal testen ob der evtl. auch so läuft. Aber bei genauerem Studium des Datenblatts sagt selbiges wohl leider nein...

Grüße
Janaha
DJLinux

Re: Bitte nur eine RTC Lösung!

Beitrag von DJLinux »

Janaha hat geschrieben:Da beim I2C- Bus der Takt von Master kommt und nur die Datenleitung vom Slave verändert werden kann...
Verstehe ich nicht der Master legt doch auch Datenpakete beim Senden auf die Datenleitung.
Janaha hat geschrieben:Der I2C- Bus wird eigentlich durch Pullup- Widerstände auf dem 3,3 Volt High Pegel gehalten
wo sind da Pullup Widerstände in dem RTC und EEPROM Chip?

Grüsse Joshy

Edit:
Ich denke so ganz langsam verstehe ich es
die Datenleitung wird vom Master mit INA gelesen
aber mit DIRA und nicht mit OUTA vom Master "beschrieben".
(eigentlich merkwürdig und wiederstrebt meiner Logik)

hier der Ausschnit aus dem IC2 Code

Code: Alles auswählen

'               Transmit Packet
transmitPacket  mov     counter,#8      ' Setup to transmit the packet.  
                shl     buffer,#24
transmitLoop    shl     buffer,#1 wc    ' Output data.
                muxnc   dira,data
                call    #clockHigh 
                call    #clockLow
                djnz    counter,#transmitLoop
                andn    dira,data
                call    #clockHigh      ' Test aknowledge bit.    
                test    data,ina wc 
                muxnc   buffer,#$FF
                call    #clocklow
transmitPacket_ret
                ret       

'               Receive Packet
receivePacket   mov     counter,#8      ' Setup to recieve the packet
                andn    dira,data       ' Release data
receiveLoop     call    #clockHigh      ' Input data  
                shl     buffer,#1 
                test    data,ina wc
                muxc    buffer,#1
                call    #clockLow
                djnz    counter,#receiveLoop  
receivePacket_ret
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: Bitte nur eine RTC Lösung!

Beitrag von oog »

DJLinux hat geschrieben:Edit:
Ich denke so ganz langsam verstehe ich es
die Datenleitung wird vom Master mit INA gelesen
aber mit DIRA und nicht mit OUTA vom Master "beschrieben".
(eigentlich merkwürdig und wiederstrebt meiner Logik)
Auf diese Weise wird etwas ähnliches wie ein Open-Collector-Ausgang nachgebildet.

* Das Ausgangssignal des Pins wird auf Low gesetzt.
* Ist der Pin als Eingang geschaltet, kann der externe Pullup die Leitung auf High ziehen.
* Ist der Pin als Ausgang geschaltet, wird die Leitung auf Low gezogen.

Alle angeschlossenen IC dürfen die Leitung auf Low ziehen, aber niemals aktiv ein High schalten. Somit gibt es keine Kurzschlüsse, selbst wenn mehrere IC gleichzeitig die Ausgänge schalten.
Schlimmstenfalls bleibt die Leitung auf Low und es gibt Übertragungsfehler, aber es geht nichts kaputt.

Im Programmcode sieht das etwas merkwürdig aus, wenn man den Hintergrund nicht kennt.

Gruß, oog :B4
Antworten