Ayuda controlando un MAX6960

Hola a todos por primera vez!!

Estoy intentando realizar unas librerias para gestionar el MAX6960, pero llevo 3 dias con el y me ha sido absolutamente imposible, no parpadea ni un led :cry: . Ya he revisado las conexiones y todo esta bien (o eso parece :-/ ). Tengo otros trabajos con el MAX72xx y no me dio tanta guerra.

Ademas viendo el auge que estan teniendo el controlar matrizes de leds, seria muy buene poder colgar en arduino.cc estas librerias para todo el mundo. Ya que con este chip se facilita enormemente el cableado con los leds.

Alguien conoce de algun ejemplo que maneje este IC (existe muy poco aun sobre él)? o podria alguien ayudarme o darme alguna pista o información?

Os dejo el código básico y limpio por si alguien es capaz de ayudarme.

int clock = 8; // clock
int dataIn = 9; // dataIn
int load = 10;  // ooad o CS

// max6960 registers
byte reg_address   = 0x00;
byte reg_pixel_int = 0x01;
byte reg_panel_int = 0x02;
byte reg_digit0         = 0x03;
byte reg_digit1         = 0x04;
byte reg_Fault         = 0x05;
byte reg_driver         = 0x08;
byte reg_LSB         = 0x09;
byte reg_MSB         = 0x0A;
byte reg_plane     = 0x0B;
byte reg_panel     = 0x0D;
byte reg_devices   = 0x0E;
byte reg_rows      = 0x0F;

// MEDIANTE  SHIFT
void spiTransfer(volatile byte data) {
    shiftOut(dataIn,clock,MSBFIRST,data);
}    

// A MANO
void putByte(byte data) {
  byte i = 8;
  byte mask;
  while(i > 0) {
    mask = 0x01 << (i - 1);      // get bitmask
    digitalWrite( clock, LOW);   // tick
    if (data & mask){            // choose bit
      digitalWrite(dataIn, HIGH);// send 1
    }else{
      digitalWrite(dataIn, LOW); // send 0
    }
    digitalWrite(clock, HIGH);   // tock
    --i;                     // move to lesser bit
  }

}

void sendByte( byte reg, byte dato) {    
  // de 8 en 8 bits. byte = 8 bits
  digitalWrite(load, LOW);
  putByte(reg);
  putByte(dato);
  digitalWrite(load,HIGH); 
  digitalWrite(clock, LOW);
}

void sendByte2( byte reg, byte dato) {    
  digitalWrite(load, LOW);
  spiTransfer(reg);
  spiTransfer(dato);
  digitalWrite(load,HIGH);
  digitalWrite(clock, LOW);
}


void setup () {
  pinMode(dataIn, OUTPUT);
  pinMode(clock,  OUTPUT);
  pinMode(load,   OUTPUT);

  beginSerial(19200);

 sendByte2(reg_panel,0x41);  // shootdawn off
  sendByte2(reg_panel_int,0x31); //intensidad fuerte
  sendByte2(reg_devices,0x01);// solo un integrado
//  sendByte2(reg_rows,0x01);  
  delay(500);
}  

void loop () {
  // on one led
  sendByte2(reg_MSB,37);
  sendByte2(reg_MSB,65);
  sendByte2(reg_MSB,80);
  sendByte2(0x00,49);
  delay(1000);
}

He estado trabajando en la misma configuración y, al final, logramos hacer funcionar el MAX6960 interfaseado al Arduino con el siguiente código:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1227289029/1

Ojalá sirva de base para que alguien pueda programar una librería.

Saludos,