PDA

Επιστροφή στο Forum : Βοηθεια με το M41T94 RTC



bchris
04-06-12, 20:35
Παιδια καλησπερα σας.

Εχω υλοποιησει το παρακατω κυκλωμα (το ανεβαζω απλουστευμενο):
33935

Datasheet PIC16F877A (http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf)
Datasheet M41T94 (http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00002320.pdf)


Το προβλημα που εχω ειναι οτι δεν μπορω να διαβασω απο το RTCC.
Οτι και να εχω κανει, το chipακι ειναι σαν να ειναι καμενο.
Εχω παραγγειλει ηδη αλλο, αλλα μεχρι να ερθη, δωστε μου κι εσεις τα φωτα σας μην εχω κανει καμμια μαλ@#$@

Ευχαριστω.

Παραθετω και τον κωδικα (επισης μονο τα ενδιαφεροντα σημεια) που τρεχω: SPI.ASM.ZIP

GeorgeVita
04-06-12, 23:33
Προτείνω να διαβάσεις καλά το datasheet του M41T94 και να μας δείξεις όλη την συνδεσμολογία που έχεις κάνει σε αυτό (λείπει η τάση τροφοδοσίας). Οπως γράφει στο datasheet όταν δεν βλέπει αρκετή τάση στο Vcc μπαίνει αυτομάτως σε power standby και δεν επικοινωνεί με τον έξω κόσμο. Επιπλέον τα RST και IRQ είναι έξοδοι. Αν δεν τα χρησιμοποιείς δεν χρειάζονται pull up. Εσύ προφανώς έχεις πάρει αυτό με την μπαταρία και τον κρύσταλλο. Μήπως έχει κάποιο pin σύνδεσης της μπαταρίας αφού κολληθεί στην πλακέτα;
Τέλος η έξοδος SQW βγάζει κάποιο σήμα όταν το προγραμματίσεις κατάλληλα. Δοκίμασε να το πετύχεις.
gV

bchris
05-06-12, 00:16
Φιλε Γιωργο, το datasheet το εχω διαβασει απειρες φορες.
Οντως στο σχεδιο λειπει η τροφοδοσια. Εγινε κατα λαθος, κατα την "απλοποιηση" για να το ανεβασω εδω :)
BTW εχω μετρησει τασεις στα pin του και ειναι ΟΚ

Οσον αφορα τα RST & IRQ/FT/OUT:


The RST pin is an open drain output and an appropriate pull-up resistor should be chosen to control rise time.
The IRQ/FT/OUT pin is an open drain output which requires a pull-up resistor for proper operation.


Για το SQW τωρα, το δοκιμασα κι αυτο, και παλι πηρα τα @@ μου.
Γενικα το ολοκληρωμενο συμπεριφερεται σαν να ειναι ασυνδετο.

GeorgeVita
05-06-12, 01:11
... Οσον αφορα τα RST & IRQ/FT/OUT
Αυτά χρειάζονται αν οδηγήσεις τις εξόδους αυτές προς τον μC για reset ή interrupt. Το RTC έχει μέσα και WDT το οποίο μπορεί να δίνει reset κλπ. Αν δεν τα χρησιμοποιείς δεν σε ενδιαφέρει η ακριβής τάση στην έξοδο "open drain", ούτε θα ταλαντώσει μόνη της.

Για το "κεντρικό" θέμα:
Προσπάθησε με σχετικά αργούς παλμούς (όχι ...4MHZ) να πετύχεις την διαδικασία ανάγνωσης:
(παλμογράφος θα βοηθήσει, πιθανώς να είναι ευκολότερο να χειρίζεσαι τα Ι/Ο pins με απλές εντολές και όχι με το SPI για το debugging)

33963

Δηλαδή:
- στην αρχή E=H, SCL=H, SDI=H (το SDI είναι η σειριακή είσοδος στο RTC ενώ είναι η σειριακή έξοδος του μC)
- μετά κάνε το SDI=L και δώσε 8 παλμούς SCL (L→H)
(το πρώτο L στο SDI σημαίνει "read mode", τα υπόλοιπα 7 είναι η διεύθυνση 00 )
- τα επόμενα SCL πρέπει να βγάζουν στην έξοδο SDO κατάσταση H ή L (όχι Hiz)
- ελέγχεις ότι στην έξοδο έχεις H/L (με σύνδεση αντίστασης pull up ή pull down η έξοδος θα παραμένει H ή L χωρίς να "τραβιέται" από την αντίσταση)

gV

spiroscfu
05-06-12, 01:52
Δοκίμασες με pull-up στα spi,
αν δεν βρεις λύση δοκίμασε και αυτό.

bchris
05-06-12, 02:23
Οπως παντα ...αψογος.

Μονο που δεν καταλαβα αυτο:


- ελέγχεις ότι στην έξοδο έχεις H/L (με σύνδεση αντίστασης pull up ή pull down η έξοδος θα παραμένει H ή L χωρίς να "τραβιέται" από την αντίσταση)


Πρεπει να βαλω αντισταση στο SDO του RTC για να μετρησω?
Δεν γινεται κατευθειαν επανω στο pin?

bchris
05-06-12, 02:24
Δοκίμασες με pull-up στα spi,
αν δεν βρεις λύση δοκίμασε και αυτό.

Φοβαμαι οτι δεν σε καταλαβα :saad:
Τι εννοεις?
Μπορεις να το αναλυσεις λιγο?

ΥΓ.
Παιδια σας ευχαριστω ολους για την βοηθεια.

spiroscfu
05-06-12, 03:31
Να βάλεις αντιστάσεις από τα 5V στα 3 πιν του spi, αλλά δεν πρόσεξα την παράθεση από τα γραφόμενα του Γιώργου,

που σου λέει μάλλον πως το L και το H πρέπει να τα έχεις και αν βάλεις pull-up ή pull-down (για να σιγουρευτεί για το "ποίον:biggrin:" τους).

GeorgeVita
05-06-12, 09:46
Θεωρώ ότι έχει όλο το "πακέτο":
33966

Με την δοκιμή που αναφέρω θα δεις αν έχεις data στην έξοδο. Οταν το SDO είναι Hiz, μιά αντίσταση pull up θα το δείξει "H" και μια pull down θα το δείξει "L". Αν όμως το SDO έχει ενεργοποιηθεί και έχει "L" η pull up δεν μπορεί να το κάνει "H". Σύμφωνα με το datasheet (πάντα είναι σωστά τα datasheets) όταν έχεις σωστή τάση στο Vcc, κατεβάσεις το E στο "L" και αρχίσεις να δίνεις παλμούς στο SCL με το SDI="L", θα πρέπει να πάρεις data στο SDO μετά τον όγδοο παλμό.

gV

bchris
05-06-12, 11:07
Θεωρώ ότι έχει όλο το "πακέτο":
33966

Με την δοκιμή που αναφέρω θα δεις αν έχεις data στην έξοδο. Οταν το SDO είναι Hiz, μιά αντίσταση pull up θα το δείξει "H" και μια pull down θα το δείξει "L". Αν όμως το SDO έχει ενεργοποιηθεί και έχει "L" η pull up δεν μπορεί να το κάνει "H". Σύμφωνα με το datasheet (πάντα είναι σωστά τα datasheets) όταν έχεις σωστή τάση στο Vcc, κατεβάσεις το E στο "L" και αρχίσεις να δίνεις παλμούς στο SCL με το SDI="L", θα πρέπει να πάρεις data στο SDO μετά τον όγδοο παλμό.

gV


Α, μαλιστα.

Γιωργο εχεις δικιο, εχω παρει αυτο με το snaphat.

Θα την κανω σημερα την δοκιμη και θα επανελθω.

spiroscfu
05-06-12, 12:09
Εγώ είδα αυτό

33970

bchris
05-06-12, 13:11
...Ενδιαφερον.

Ωστοσο, ειναι το πρωτο σχεδιο που βλεπω να εχει pull-down sto SPI.
Τι να πω αν ολα τα αλλα αποτυχουν, θα δοκιμασω κι αυτο.

Και παλι ευχαριστω.

spiroscfu
05-06-12, 17:27
pull-up.

bchris
05-06-12, 18:00
pull-up.

Ναι, sorry.
Απλα το ειδα κατω και το μυαλο μου πηγε στο pull-down :0

GeorgeVita
05-06-12, 18:05
Βρήκα ένα σχηματικό από evaluation board της ST (http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_DIAGRAM/SCHEMATICPACK/steval-ipe009v1_schematic.pdf) όπου χρησιμοποιεί το 16-πόδαρο IC και οι συνδέσεις του bus γίνονται χωρίς pull-up (δεν γνωρίζω αν έχει ενεργοποιήσει τίποτε εσωτερικές).
gV

bchris
06-06-12, 12:23
Λοιπον, ακολουθωντας την συμβουλη του Γιωργου, εστειλα εχθες τα bit "ενα-ενα με το χερι" (Debug με το pickit3 kai step by step).
Ανακαλυψα λοιπον οτι το RTCC ειναι ζωντανο!
Ακουει και μιλαει μια χαρα, εχει ωρα, ολα ωραια.

Διαβασα κι ενα byte απο την user RAM (019h) που ειχα γραψει εκει σε καποιο απο τα προηγουμενα test μου....

Οποτε καταληγω στο συμπερασμα οτι για καποιο λογο, μου απανταει το φουκαριαρικο, απλα εγω δεν το ακουω.
Μπορειτε να φανταστητε γιατι συμβαινει αυτο?
Με αλλα λογια, ενω οταν χρησιμοποιηω το MSSP module, το SSPBUF παραμενει αδειο, ενω χειροκινητα βλεπω κινηση στο SDI του MCU?

Να πω εδω οτι εχω δοκιμασει και με ταχυτητες Fosc/64 me 4MHz κρυσταλλο, οποτε δεν πιστευω να ειναι θεμα ταχυτητας.

GeorgeVita
06-06-12, 12:50
Στον πίνακα χρονισμών μάλλον εννοούν χρονισμό με SCL=L→H
Δηλαδή στο γράψιμο προς το RTC κάνουν latch την είσοδό του στο L→H ενώ στο διάβασμα από το RTC αλλάζουν τα data στο H→L άρα διαβάζοντας εσύ από το μC στο L→H πρέπει να είναι ΟΚ.

34028

Ελεγξε τι κάνεις εσύ και τι γράφουν στο datasheet του PIC.
gV