Usart et bus i2c

Signaler
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006
-
Messages postés
3
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
27 avril 2011
-
Bonjour,
je suis en train de programmer un pic 16F877 et je voudrais envoyer des donnees qui arrivent dans le pic a travers le registre USART (RCSTA) a une memoire eeprom (24LC512) connectee au pic via le bus I2C.
Pour gagner du temps, je compte ecrire ds la memoire eeprom page par page (128 octets d'un seul coup). Est-ce que je peux directement envoyer les octets qui arrivent ds RCREG au bus I2C ou je dois definir un buffer de 128 octets ds la memoire RAM du pic et envoyer ce buffer via I2C?
Est-ce que vous pouvez me donner des liens utiles ou m'ecrire un sous programme qui pourraient m'aider a realiser ceci?

Merci pour vos reponses.

8 réponses

Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

Bonjour
"Est-ce que je peux directement envoyer les octets qui arrivent ds RCREG"
la reponse est non car le i2c vire a 400khz
et ton bus usart vire plus vite tu aurait rapidement des overflow
le mieux est que tu recoi tes 128 octet du usart et apres tu les ecrit dans l eeprom page par page moi je ferait un petit protocol

comande,nombre octet total, adress high & low, ( data)
exemple
comande 45h ecriture dun page
nombre octet total 84h 4 octet comande + 128 data =132
adress high 0h
adress low 0h //debut de leeprom
data 128 octet
et la tu renvoi une confirmation a ton logiciel 454F4B pour lui dire ses OK
je les deja faite sur un 16f877 avec un 24LC256 mais des page de 64 octet

a++
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006

Merci phenojeff pour ta reponse mais sincerement je n'ai pas tres bien compris ton protocole, si tu l'as deja fait une fois est-ce que tu pourras me faire une copie de ton code source?

g une autre question: je compte remplir plusieurs pages de eeprom et donc kan je passe d'une page a une autre, ou devront passer les donnees qui continuent a transiter dans le RCREG? je ne risque pas d'avoir d'overflow ds ce cas?
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

re si tu control bien le usart il y a pas de danger tout ce que tu as besion ses un bank de 130 octet

tu recoi ladress et les 128 octet du usart que tu mais en bank
et appres tu ecrit ou lit sur ton 24LC512
et apres tu confirme a ton logiciel quil peu continuer


je vais regarder dans une minute ce que jai faite sur le 877 en eeprom
et te dire ca
a++
Messages postés
87
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
4 avril 2008

jai regarder ca jai une souce dun 876 et 877 mais ca date de quelque annee
depuis jai apris des truc sur le usart la fason de recevoir et d envoyer les donner plus simplement
je vais tacher de texpliquer le truc quand ont sait pas combien octet ont doit recevoir du PC quand le pic recoie le premier octet tu active le Timer0 au second octet tu remais le Timer0 a 0 ect et quand le timer deborde sest quil ny a plus rien qui est recu du usart et la tu peu aller lire la tram recu

je peu te maitre ce que jai faite comme test ma source I2C dans mon cas cetait une page de 64 octet dit moi ou tu veux ca ou envoi moi un email
Messages postés
50
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
22 mai 2006

merci phenojeff, tu peux me l'envoyer au blueburry13@hotmail.com?
Messages postés
5
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
23 juillet 2010

Je suis un fan de l'informatique
Messages postés
5
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
23 juillet 2010

Salut blueburry et phenojeff, je voudrais aussi avoir l'application qui gère le usart et l'i2c pour une application que je suis entrain de developper. Merci

Je suis un fan de l'informatique
Messages postés
3
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
27 avril 2011

bonjour a tous
je cherche comment faire communiquer 2 PICs 16F877 via leur port série
8 entrée tor sur port A et C du 1ere PIC 16F877, envoi sur port série
réception sur port série et transfert sur port B du 2eme PIC16F877
merci d'avance pour votre aide