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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
zmienkoivan
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 10, 2011 19:43:54

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

Сообщение zmienkoivan »

подскажите пожалуйста, почему не получается задать яркость светодиодам, работает так если больше 0 то светится нужный светодиод, а если равно 0 то не светится, как использовать шим? что не так в коде? GCLK от мк 8мгц тактируется

Код: Выделить всё

#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_WriteGrayScale(&d[0],16);   
}
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»