0
Καλησπέρα.
Όπως έχω ξαναπεί κατασκευάζω επιγραφές LED. Συνήθως δουλεύω με τον ATMEGA328.
Ο χρήστης στέλνει δεδομένα (κείμενα ρυθμίσεις) μέσα από πρόγραμμα των windows (που φτιάχνω εγώ).
Τα δεδομένα τα διαβάζει ο ATMEGA 328 και τα αποθηκεύει σε μία FRAM μνήμη.
Έχω φτιάξει ένα δικό μου πρωτόκολλο επικοινωνίας το οποίο λειτουργεί ως εξής.
έστω ότι θέλω να αποθηκεύσω στην μνήμη FRAM στην θέση 1 το δεδομένο 028 και στην θέση 2 το δεδομένο 155.
1)o Master (windows πρόγραμμα) στέλνει το δεδομένο "W" που σημαίνει ότι κάνει αίτηση να στείλει δεδομένο και μετά περιμένει απάντηση
2)Μόλις διαβάσει το δεδομένο ο Slave (atmega 32 στέλνει "R" απάντηση και έτσι ενημερώνει τον Master ότι μπορεί να στείλει τα δεδομένα που θέλει. Σε αυτό το σημείο ο Slave κάνει συνέχει loop μέχρι ο Master να στείλει "F" ότι τελείωσε την αποστολή
3)Ο Master στελνει την τα δεδομένα και την θέση που θέλει να αποθηκευτούν τα δεδομένα στην FRAM. με τον εξής τρόπο:
S0001028ES0002155E. το S σημαίνει Start,τα πρώτα 4 ψηφία ειναι η θέση της FRAM,τα 3 τελευταία το δεδομένο που θέλουμε να αποθηκευτεί και το Ε στο τέλος σημαίνει End. Δηλαδή τέλος. Αυτή την στιγμή αποθηκεύει τα δεδομένα στην FRAM.
4)O Master στέλνει τον χαρακτήρα "F" που σημαίνει ότι τελείωσε η αποστολή των δεδομένων.
5)O Slave στέλνει στον master το μέγεθος των εγγραφών που έγιναν στην FRAM.
Εν ολίγης η επικοινωνία δουλεύει ώς εξής:
Master:W
Slave: R
Master:S0001028E S0002155E
Master: F
Slave:2
Το πρωτόκολλο αυτό που έχω επινοήσει δουλεύει με απόλυτη επιτυχία αλλά είναι κάπως χρονοβόρο...
δηλαδή για να στείλω 2bytes στην FRAM στέλνω 9bytes!!
Υπάρχει κάποιος τρόπος για να γλιτώσω χρόνο (και κόπο);