Bonjour a tous.
J'ouvre ce post car je me retrouve coincé avec le max6957 de chez maxim.
Celui-ci communique avec l'Arduino (Stickduino dans mon cas) via le protocole SPI.
J'ai beau revérifier mon câblage, puis mon code. Je n'ai pas encore réussit a allumer une seule led.
Si quelqu'un a déja mit en place un max6957, je me sentirais moins seul :). Mes recherches sur les moteurs de recherche n'aboutissent pas.
Je post mon code si quelqu'un voit une erreur.
Merci d'avance.
int Clock = 0;
int Latch = 1;
int Data = 2;
void max6957_init() {
max6957_send(0x09,0x55); // Conf port 0x09 0x55 Spec PDIP (cf page5)
max6957_send(0x0A,0x55); // Conf port 0x0A 0x55 Spec PDIP (cf page5)
max6957_send(0x0B,0x00); // Conf port 0x0B 0x00 Led driver (cf page2 Table2)
max6957_send(0x0C,0x00); // Conf port 0x0C 0x00 Led driver (cf page2 Table2)
max6957_send(0x0D,0x00); // Conf port 0x0D 0x00 Led driver (cf page2 Table2)
max6957_send(0x0E,0x00); // Conf port 0x0E 0x00 Led driver (cf page2 Table2)
max6957_send(0x0F,0x00); // Conf port 0x0F 0x00 Led driver (cf page2 Table2)
max6957_send(0x02,0x0F); // Global current 0x02 0x0F 16/16(24ma)
max6957_send(0x04,0x01); // Conf Regsiter Shutdown 0x04 0x01 Normal operation
}
void max6957_send(int m, int n) {
digitalWrite(Latch, LOW);
fct_shift(Data, Clock, MSBFIRST, (m)); // 8bits command (cf page9)
fct_shift(Data, Clock, MSBFIRST, (n)); // 8bits data (cf page9)
Serial.println();
digitalWrite(Latch, HIGH);
}
//Fonction récupéré du fichier wiring_shift.c pour le debug
void fct_shift(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)
{
int i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST) {
digitalWrite(dataPin, !!(val & (1 << i)));
Serial.print(!!(val & (1 << i)));
}
else {
digitalWrite(dataPin, !!(val & (1 << (7 - i))));
Serial.print(!!(val & (1 << (7 - i))));
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}
void setup() {
Serial.begin(9600);
pinMode(Clock, OUTPUT);
pinMode(Latch, OUTPUT);
pinMode(Data, OUTPUT);
digitalWrite(Clock, LOW);
digitalWrite(Latch, LOW);
digitalWrite(Data, LOW);
max6957_init();
}
void loop() {
//Port 4 a 11 inexistant en vesion PDIP
max6957_send(0x2C,0x01); // Port 12 a 1 (cf page12 table3)
delay(1500);
max6957_send(0x2C,0x00);
delay(1500);
}