roboforum.ru

Технический форум по робототехнике.

MBI5030 не могу запустить шим

MBI5030 не могу запустить шим

zmienkoivan » 11 ноя 2011, 15:30

подскажите пожалуйста, почему не получается задать яркость светодиодам, работает так если больше 0 то светится нужный светодиод, а если равно 0 то не светится, как использовать шим? что не так в коде?
Код: Выделить всёРазвернуть
#define   MBI_PIN_LATCH      PORTC.2 
#define   MBI_PIN_SDI   PORTC.0
#define   MBI_PIN_SDO   PORTC.3
#define   MBI_PIN_SCK   PORTC.1

#define   MBI_DATA_LATCH      1
#define   MBI_GLOBAL_LATCH           3
#define   MBI_READ_CONFIG      5
#define   MBI_ENABLE_ERR_DETECT   7
#define   MBI_READ_ERR_STATUS   9
#define   MBI_WRITE_CONFIG      10

void MBI_init() {   
   
    PORTC = 0x0000;   
}   
   
   
void MBI_write(unsigned int DATA, unsigned char MODE){   
    unsigned char i; 
    unsigned int temp; 
    for(i=0; i<16; i++) {   
       temp = DATA&(0x01<<i);   
        if(temp) MBI_PIN_SDI = 1;   
        else MBI_PIN_SDI = 0;   
        if(i>(15 - MODE)) {   
            MBI_PIN_LATCH = 1;     
            // delay_us(50);   
            }   
        MBI_PIN_SCK = 1;   
       // delay_us(50);   
        MBI_PIN_SCK = 0;       
    }   
    MBI_PIN_LATCH = 0;   
    MBI_PIN_SDI = 0;     
}   
void MBI_WriteGrayScale(unsigned int *ptr, unsigned char len){   
    unsigned char i;   
    for(i=0; i<(len-1);i++) {   
        MBI_write(*(ptr+i),MBI_DATA_LATCH);   
    }   
    MBI_write(*(ptr+(len-1)),MBI_GLOBAL_LATCH);           
}     
void MBI_WriteConfig(unsigned int config, unsigned char len) {   
    unsigned char i;   
    for(i=0;i <(len-1);i++) {   
        MBI_write(config,MBI_DATA_LATCH);     
    }     
    MBI_write(config,MBI_WRITE_CONFIG);   
}     
   
void MBI_ReadConfig(unsigned int *config, unsigned char len, unsigned char MODE){   
    unsigned char i, j;   
    MBI_write(0x0000,MODE);   
    MBI_PIN_SDI = 0;   
    for(i=0; i<len;i++){   
        for(j=0; j<16; j++){   
            MBI_PIN_SCK = 1;   
            //delay_us(50);
            if(MBI_PIN_SDO) *(config+i)|=(0x0001<<j);   
            else *(config+i)&=(~(0x0001<<j));   
            MBI_PIN_SCK = 0;       
        }   
    }         
}
void main(void)
{
const unsigned int d[16] = {0x000,0x2345,0x3456,0x4567,0x5678,0x6789,0x7890,0x8901,0x9012,0x0123,0x0000,0x1111,0x2222,0x3333,0x4444,0x5555};   
unsigned int config_reg[4];       
 
MBI_init();   
MBI_WriteConfig(0b0011101010101100, 1);
MBI_WriteGrayScale(&d[0],16);   
}


Re: MBI5030 не могу запустить шим

Angel71 » 11 ноя 2011, 15:59

вполне возможно, что у нас разые даташиты, но... в моём есть: sdi, dclk, le, gclk и sdo. сильно в код не вникал, но есть подозрение, что вы недопоняли значение входа gclk.

Re: MBI5030 не могу запустить шим

zmienkoivan » 11 ноя 2011, 16:04

gclk от внешнего кварцевого генератора тактируется


Rambler\'s Top100 Mail.ru counter