mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ansteuerung eines PCF8583


Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Derzeit versuche ich gerade ein externes Timer-Modul (PCF8583) mit dem
AT90S4433 anzusteuern. Ich programmiere in Bascom und das Programm
clock.bas läuft auch schon. Wie oder mit welchem Befehl erreiche ich
aber, dass der PCF8583 zu einer bestimmten Zeit den Interrupt
schaltet?
Mit diesem Timer Modul möchte ich später einen ganzen Schaltkreis
einmal täglich "aufwecken".
Kann mir da jemand helfen?

mfG

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das hab ich gefunden:

orginal:

Sub Settime(ho As Byte , M As Byte , S As Byte)
   S = Makebcd(s)              ' seconds
   M = Makebcd(m)              ' minutes
   Ho = Makebcd(ho)            ' hours
   I2cstart                    ' Start sequence for I2CBUS
   I2cwbyte Wrtc               ' point address to write to PCF8583
   I2cwbyte 0              ' selects control register in register 0
   I2cwbyte 0                ' starts high bits read
   I2cstop                  ' Stop sequence for I2CBUS

   I2cstart                          ' Start sequence for I2CBUS
   I2cwbyte Wrtc            ' point address to read from PCF8583
   I2cwbyte 2               ' point to register 2
   I2cwbyte S               ' writes seconds, register 2
   I2cwbyte M               ' writes minutes, register 3
   I2cwbyte Ho              ' writes hours, register 4
   I2cstop                  ' Stop sequence for I2CBUS


meine idee noch nicht getestet


init usw

   I2cstart                 ' Start sequence for I2CBUS
   I2cwbyte Wrtc            ' point address to read from PCF8583
   I2cwbyte 2               ' point to register 2
   I2cwbyte S               ' writes seconds, register 2
   I2cwbyte M               ' writes minutes, register 3
   I2cwbyte Ho              ' writes hours, register 4
   I2cwbyte 9               ' Register 9 Alarm 1 Register anspringen
   I2cwbyte Alarm           ' Alarm = 15 alle 15 min wird ein int
   I2cwbyte 1               ' ControlStatusRegister anspringen
   I2cwbyte enable          ' enable = 2 Clear Flag/enable Int
   I2cstop                  ' Stop sequence for I2CBUS

Ich nur eine Idee bin mir nicht sicher ..... werde nun mal kurz die
Hardware aufbauen.... und dann mal bischen testen und spielen..

Mfg

Dirk

Autor: Tobias Wozniok (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Hast du den Code noch getestet? Ich habs eben mal ausprobiert, so wie
ich meinte dass es richtig ist. zweifel --> geht nicht!
Leider kann ich auch nicht sagen woran es liegt... Hast du vielleicht
was brauchbares?
Hier mein Code:

    I2cstart
    I2cwbyte &HA0                      'write mode
    I2cwbyte &H08                      'select alarm control Register
    I2cwbyte &B11110000
    I2cstart                           'repeated start
    I2cwbyte &HA0                      'write mode
    I2cwbyte &H0A                   'select seconds - alarm Register
    I2cwbyte B1
    For I = 2 To 5
      I2cwbyte Tm(i)
    Next
    I2cstop
Den kompletten Code hab ich auch "geuploadet".
Bis später

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

du hast was vergessen. Du musst erst im Register 00 anspringen und das
Bit2 auf 1 setzen... damit der Alarm aktiviert ist. Speicherplatz 08
musste das Bit7 nich setzen.....


Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Tobias: komm mal in den Chat von der HP dann kann quatsche.

Dirk

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Chat von mikrocontroller.net oder was? der geht nicht, da bekomme
ich immer ein timeout. Kuehnel hat keinen chat oder doch?!

ich werde deinen tip mal testen

danke, ciao

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Dirk, falls du nen lauffähigen Quellcode hast, dann schick ihn mir
doch bitte!! vielen dank schonmal. cu

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

sry anscheinend hab ich auch meine Probs damit. Erstmal bau ein 10k
pullup an den INT Pin weil es ein Open Drain ist....

Bei mir toggled der Pin leider alle Sekunde. Ich habe ein kleinen
Fehler im Bascom Sample gefunden. Leider ist Mselec im Urlaub und ich
keine Antwort... Ich bin aber noch bei.....


Mfg

Dirk

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nach langem suchen hab ich ein Beispiel gefunden auch fuer den Alarm.

Es ist leider in C aber ich denke man kriegt es nun hin...


Mfg

Dirk

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin!
Der link zur datei tst_PCF8583.c geht nicht!! Bitte nochmal posten

danke,
Tobi

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem:
Die Application Note hilft leider nicht wirklich weiter (oder ich bin
wieder zu doof). Wenn man mal Datenblatt und AN für den PCF8583
vergleicht, dann macht der Autor der AN da ganz wilde Dinge, sowas wie
Alarm Minuten in den 100tel Sekunden-Bereich schreiben usw... ganz
komisch. evtl ist die AN doch nicht für den PCF8583 geschrieben.

sollten wir etwa die ersten sein, die dieses Thema in (PCF vs. Bascom)
in Angriff nehmen?

mfG
Tobi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

genau Tobias das finde ich auch sehr komisch. Herr Kuehnel hat mir
endlich geantwortet und ich hab Ihm mein Prg zugesendet. Leider kann
ich wohl von meiner Firma aus kein Anhang senden und ich weiss die Hp
nicht mehr somit komme ich erst Montag wieder ran.

Haste dein Int Pin jetzt ueber ein 10k Pullup gespeist, wenn ja dann
messe mal die Spannung mit einem Multimeter ..... wird bei Dir auch die
Spannung im 1 Sekundentakt getaktet?


Mfg
Dirk

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit dem Pullup funzt es jetzt! Ich setze einen dated-alarm, und
dieser wird auch via Int angezeigt!! juhuuu (code im anhang)

zweierlei problemchen:
  - wie resete ich den interrupt am pfc? wenn der interrupt kommt, dann
bleibt de int auf masse, wie stelle ich das dann zurück?
  - wenn ich den µC programmiert habe, dann läuft alles im ersten
durchlauf prima. Aber wenn ich dann die Spannungsversorgung ausschalte,
und dann wieder an, dann stehen die Sekunden plötzlich auf 95!! Allein
die 95 ist schon merkwürdig (bei sekunden??), wichtiger ist aber, WO
KOMMT DAS HER??

Irgendwelche Vorschläge??

mfG
Tobi

Autor: Tobias Wozniok (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der Code, den hatte ich vergessen

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Tobias wenn du magst komm nochmal in den chat... Mir ist was
aufgefallen....

Mfg

Dirk

Autor: Tobias Wozniok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hehe, supi...
ich bin nicht zuhaus, und in der FH sind alle nötigen Ports zum chatten
gesperrt... kommst du an icq ran? das geht nämlich hier...
meine icq# bekommst du über meine emailadresse...
ansonsten entweder posten oder per email

cu

Autor: Tobias Wozniok (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So,
alle Probleme behoben!
Der lauffähige Code ist im Anhang.
Bin bis morgen off, bis dann!

mfG
Tobi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Tobias ich hab den Code gesaugt und fuer mein 8535er umgeschrieben ....
der funzt aber bei mir nicht. Die Zeit wird nicht gesetzt.


Mfg

Dirk

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.