Go Down

Topic: [aide] EEPROM AT93C46 protocole SPI (Read 3 times) previous topic - next topic

lacolombenoir

Pour ce qui est d'une lecture attentive de la doc de l'eeprom, je n'arrête pas de la lire je la connais par cœur pratiquement,
Pour ce qui est du spi,
Je savais déjà que d'un matériel a l'autre sa variait, mais j'ai lu aussi que l'arduino n'étais pas limitée a 8 bit pour le protocole spi,
Donc avant de prendre ce dernier poste pour argent contant j'espère que j'aurais confirmation ou pas dans les prochain poste.
www.hatokuro.comuf.com site consacrer au rétrogaming

fdufnews

#21
Nov 25, 2012, 10:52 am Last Edit: Nov 25, 2012, 10:57 am by fdufnews Reason: 1
Quote
Donc avant de prendre ce dernier poste pour argent contant j'espère que j'aurais confirmation ou pas dans les prochain poste.

La bonne démarche c'est d'ouvrir la doc de l'atmega, pas d'attendre que quelqu'un le fasse pour toi.
Mais bon un extrait:
8-bit Microcontroller with 4/8/16/32K Bytes In-System Programmable Flash
ATmega48PA, ATmega88PA, ATmega168PA, ATmega328P
chapitre 18. SPI - Serial Peripheral Interface


When configured as a Master, the SPI interface has no automatic control of the SS line. This
must be handled by user software before communication can start. When this is done, writing a
byte to the SPI Data Register starts the SPI clock generator, and the hardware shifts the eight
bits into the Slave
. After shifting one byte, the SPI clock generator stops, setting the end of
Transmission Flag (SPIF). If the SPI Interrupt Enable bit (SPIE) in the SPCR Register is set, an
interrupt is requested. The Master may continue to shift the next byte by writing it into SPDR, or
signal the end of packet by pulling high the Slave Select, SS line. The last incoming byte will be
kept in the Buffer Register for later use.


Jusqu'à preuve du contraire la doc Atmel ne parle que de byte. Libre à toi de croire ce que tu veux.
Si tu veux, tu peux aller voir les illustration de la doc. Les registres font 8 bits et il n'y a pas d'option pour changer ça.

lacolombenoir

Si je comprend bien alors on ne peu envoyer que des packet de 8 bit donc un octet,
La documentation ATMega ne mets pas venu a l'esprit car je pensais que c'était la libraire SPI faite pour le projet Arduino qui gérais le protocole,

Si je comprend bien la situation dans la quelle je suis si je veux utiliser c'est eeprom de marque Atmel je vais devoirs émuler mon propre signal SPI,

Sa métone quand même car le Microcontroleur et les eeproms sont tout deux produite par Atmel, et pourtant si peu de compatibilité .
www.hatokuro.comuf.com site consacrer au rétrogaming

al1fch

#23
Nov 25, 2012, 12:00 pm Last Edit: Nov 25, 2012, 12:44 pm by al1fch Reason: 1
Bonjour

Quote
Sa métone quand même car le Microcontroleur et les eeproms sont tout deux produite par Atmel, et pourtant si peu de compatibilité


Les 93C46 sont des composants anciens qui se vendent encore pour la maintenance.
Atmel produit son '93C46' en 'seconde source' de Microchip qui l'a introduit (avant 1995) comme EEPROM au bus Microwire, lequel bus est un SPI simplifé  'maison' de Microchip....

Demander aux micros actuels la rétro-compatibilité avec les puces (plus ou moins SPI)  d'il y 20 ans est sans toute excessif !
Pas  étonnant donc qu'il soit nécessaire de faire du 'sur mesure'

Certains (AVR mais pas  Arduino) s'y sont déjà frottés avec semble t-il , finalement, succès :
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=93203&postdays=0&postorder=asc&start=20&sid=41c2fc377e0f3fe678cdc9233759f51f

fdufnews

#24
Nov 25, 2012, 12:39 pm Last Edit: Nov 25, 2012, 12:41 pm by fdufnews Reason: 1
Quote
je vais devoirs émuler mon propre signal SPI,


Je te suggères de partir de wiring_shift.c qui se trouve dans les fichiers sources de l'arduino, hardware/arduino/cores/arduino.
La librairie fonctionne avec des uint8_t (des byte) et peut facilement être adaptée. Il faut modifier shiftOut pour avoir en entrée un unsigned int en ne décalant que 10 bits évidemment. Pour la lecture il faut reprendre la fonctionne shiftIn et lui faire lire un bit supplémentaire que l'on rejette car il y a un 0 bidon en début de cycle de lecture de cette mémoire.

Edit : J'oubliais, il faut renommer les fonctions sinon il va y avoir un conflit avec la librairie originale.

Go Up