Forum: Mikrocontroller und Digitale Elektronik Ansteuerung eines PCF8583


von Tobias Wozniok (Gast)


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

von Dirk (Gast)


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

von Tobias Wozniok (Gast)


Angehängte Dateien:

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

von Dirk (Gast)


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

von Dirk (Gast)


Lesenswert?

Hi,

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

Dirk

von Tobias Wozniok (Gast)


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

von Tobias Wozniok (Gast)


Lesenswert?

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

von Dirk (Gast)


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

von Dirk (Gast)


Angehängte Dateien:

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

von Tobias Wozniok (Gast)


Lesenswert?

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

danke,
Tobi

von Tobias Wozniok (Gast)


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

von Dirk (Gast)


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

von Tobias Wozniok (Gast)


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

von Tobias Wozniok (Gast)


Angehängte Dateien:

Lesenswert?

hier der Code, den hatte ich vergessen

von Dirk (Gast)


Lesenswert?

Hi,

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

Mfg

Dirk

von Tobias Wozniok (Gast)


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

von Tobias Wozniok (Gast)


Angehängte Dateien:

Lesenswert?

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

mfG
Tobi

von Dirk (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.