PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DS1307/ATmega168 Schaltuhr macht Probleme



oderlachs
07.06.2013, 09:19
Hallo Freunde !
Wieder brauche ich mal die Hilfe erfahrener "alter Hasen", es geht um die Zeitauswertung. Den Code gibt es hier :http://robot.oderlachs.de/garduino/schaltuhr.html (http://robot.oderlachs.de/garduino/schaltuhr.html).

Ich kann einfach die Zeit nicht auswerten, weiss nicht was ich da falsch mache ? Ich gestehe den Code aus dem Web zu haben, aus einem funktionierenden Beispiel und auch das es meine erste I2C Anwendung ist

Kann mir wer einen Tip geben??

Gruss und Dank Gerhard

Ergänzung:
Es ist so einiges Auskommentiert, jetzt sollen erst mal nur die LED's am PortD.2 + 3 im 30sec. Rhytmus abwechselnd leuchten...(Testschaltung)

Dieses (http://www.hobbyist.co.nz/sites/default/files/docs/RTC/Tiny_RTC_schematic.pdf) RTC Modul wird verwendet

MagicWSmoke
07.06.2013, 09:49
Code aus dem Web zu haben, aus einem funktionierenden Beispiel und auch das es meine erste I2C Anwendung ist
Such' Dir gescheiten Code, denn der ist Müll. Ein Auszug

void i2c_start()
...
ddr_scl_hi;
...
scl_hi;
Hier wird der Pin zu SCL aktiv getrieben, also auf Ausgang & High gesetzt. Bei I2C wird per Standard dagegen nur auf Low gezogen, das High wird durch Pullups erzeugt, das erlaubt dann den Bausteinen Clock-Stretching, bei dem der Slave den Clock verlängert. Kannst Dir dann vorstellen, was passiert, wenn der Slave auf Low zieht und der Master aktiv High treibt.
Warum nimmst Du nicht die Hardware I2C Unit, die der ATM168 ja hat und baust mit 'ner Software I2C rum?

aus einem funktionierenden Beispiel
Hat das Beispiel bei Dir funktioniert, oder wird dem Beispiel nur nachgesagt, dass es funktioniert?
Ist die Hardware in Ordnung?

oderlachs
07.06.2013, 10:25
Hallo Magic !
Danke für die Hinweise, das Funktionieren des Beispiels war auf Youtube zu sehen un im Foto...
Wie gesagt es ist das erste Mal, das ich mich auf dem Boden von AVR und I2C bewege. Die Hardware ist OK das TinyRTC Modul arbeitet richtig(arduinoerprobt), Das STK 500 und auch der µC ist darauf in Ordnung....Aber das ganze soll ja dann auf einen andern Bord dann laufen (OlimexProtoboard P40-USB).
Na ich werde noch probieren...hoffendlich dabei auch lernen, nur drängt das ganze eigendlich sollte es schon funktionieren.
Möchte auch nicht noch das Geld für eine wirklich funktionierende Industrieschaltuhr ausgeben, von Baumarktschaltuhren habe ich die Nase bzw. den Mülleimer voll.


Warum nimmst Du nicht die Hardware I2C (http://www.rn-wissen.de/index.php/I2C) Unit, die der ATM168 ja hat und baust mit 'ner Software I2C (http://www.rn-wissen.de/index.php/I2C) rum?

Weil das RTC-Modul batteriegepuffert ist und mit Spannungsabschaltungen zu rechnen ist....
Anders rum möchte ich das auch mal verstehen + sehen wie es richtig so geht.

Gruss Gerhard

MagicWSmoke
07.06.2013, 10:56
Danke für die Hinweise, das Funktionieren des Beispiels war auf Youtube zu sehen un im Foto...
Selbst wenn's gehen sollte, halte ich nichts von schlechtem Code.

Die Hardware ist OK das TinyRTC Modul arbeitet richtig(arduinoerprobt)
Also der Schaltplan, verglichen mit dem Datenblatt der DS1307Z (Beispiel Maxim) schaut äußerst kreativ aus. Ein Widerstand auf den Quarz, ein Vorwiderstand (Spannungsteiler?) zur Batterie...
Wo findet man denn so etwas?

Möchte auch nicht noch das Geld für eine wirklich funktionierende Industrieschaltuhr ausgeben, von Baumarktschaltuhren habe ich die Nase bzw. den Mülleimer voll.
Warum rot?

Weil das RTC-Modul batteriegepuffert ist und mit Spannungsabschaltungen zu rechnen ist....
Was hat das Eine mit dem Anderen zu tun? Die Hardware I2C benutzt im Unterschied nur die eingebaute und funktionierende I2C Einheit des ATM168, im Gegensatz zu einer Soft-I2C.

Anders rum möchte ich das auch mal verstehen + sehen wie es richtig so geht.
Du sagst dass Du das Pingewackel verstehst, aber die Hardware-I2C nicht?
Wie schon erwähnt, der Code ist schlecht programmiert und belegt, dass jemand, der's in Youtube einstellt hat, noch lange keine Ahnung davon haben muss, wie's richtig geht.

Edit:
Was sucht eigentlich das wdt_reset() im Code? Entweder der Watchdogtimer ist per WDTON Fuse ausgeschaltet, dann läuft er auch per Code nicht, da er dort nicht eingeschaltet wird. Ist er hingegen per Fuse eingeschaltet, dann läuft er in der Voreinstellung mit der kürzesten Auslösezeit (da nicht konfiguriert) und dann löst er spätestens bei _delay_ms(500) aus.

oderlachs
07.06.2013, 14:12
Hallo Magic !

in allem kann ich Dir leider nicht folgen was Du damit meinst, leider. Ich habe mir ein neues Beispiel (http://extremeelectronics.co.in/avr-tutorials/ds1307-i2c-rtcc-interface-using-softi2c-lib/)gesucht und denke das ich damit weiterkomme.
ich werde über Sieg oder Untergang hier berichten.
Mir ging es erstmal darum schnellstmöglich die Minuten-Schaltuhr fertig zu bekommen und zwar ohne Arduino, wo es ja schon lange mit funzt, zum Anderen gleichzeitig mich im Code schreiben zu üben, darum wollte ich eigendlich nichts ganz Fertiges.

Warum ich was da in Rot schreibe, weil es mir auf die Funktionssicherheit ankommt , was ja bei Baumarkt- u.ä. Artikeln kaum gewährleistet ist.

Gerhard

MagicWSmoke
07.06.2013, 14:55
in allem kann ich Dir leider nicht folgen was Du damit meinst, leider.
Das was mir in Deinen Beiträgen schon mal ab und an auffiel, ist dass Du nicht auf die Diskussion eingehst und zu sehr über Belangloses schreibst.
Hier z.B. müsstest Du halt sagen, was Du nicht verstehst und wo Du nicht folgen kannst, würdest Du das so machen, wäre Dein Lernerfolg größer.
Ich weiß jetzt z.B. immer noch nicht, warum die Elektronik solche "Eigentümlichkeiten", aufweist, wie von mir angesprochen.
Aber Du hast da offenbar für Dich entschieden, dass es ja auch mit dem Arduino klappt, also passt schon alles.

Ich habe mir ein neues Beispiel (http://extremeelectronics.co.in/avr-tutorials/ds1307-i2c-rtcc-interface-using-softi2c-lib/)gesucht und denke das ich damit weiterkomme.
Du ruderst mit etwas neuem weiter, es würd' aber reichen, wenn Du's einmal gescheit lernst.
Möchtest Du schon eine Soft-I2C nutzen, dann nimm doch die Peter Fleury Lib, die ist gut und allgemein bekannt.
Warum eigentlich Soft-I2C? Auch das hast Du nicht nicht beantwortet.
Der Grund, warum man Soft-I2C nimmt ist: wenn der µC kein Hardware I2C hat, wenn man einen weiteren oder mehrere I2C-Stra(ä)ng(e) will, oder wenn man die dezidierten SCL/SDA-Pins nicht frei hat.
Ist das denn hier der Fall ?

Mir ging es erstmal darum schnellstmöglich die Minuten-Schaltuhr fertig zu bekommen...
Ohne die passenden Vorkenntnisse ist's halt nix mit schnellstmöglich.

weil es mir auf die Funktionssicherheit ankommt , was ja bei Baumarkt- u.ä. Artikeln kaum gewährleistet ist.
Dagegen ist auch Selbstgebasteltes nicht gefeit :D