Всем привет!
Вот понадобилось светить диоды при помощи MBI5031.
Микруха позиционируется как Последовательный регистр сдвига на 16 бит с контролем яркости на 16 бит.
Как я понял чтобы загрузить значения портов нужно 16 раз загрузить 16ти битное число последовательно через шину CLK и SDI с условием что после первых 15 пачек по 16 бит выставлять LE на 1 последний бит и 16ую пачку завершить 3мя битами LE.
Частота мерцания LED выставляется шимом на ножку GCLK. Максимальный ток выставляется резистором на ногу R-EXT, там у меня 460 Ом.
Так?
Диоды подключил анодом к +5 ну а катодом к микрухе.
Никак не могу их зажечь... Вот эксперементальный код AVR 16MHz:
Код:
|
int main(void) {
TCCR1A = _BV(COM1B0); //Togle OC1B on compare match
TCCR1B = _BV(WGM12) | _BV(CS11); //div=8, CTC mode
OCR1B = 0x07d0; //1 kHz -› GCLK
PORTB = 0x00;
DDRB = 0b11010111; // XXX GCLK XXX XXX SDO SDI DCLK LE
PORTB |= _BV(PB2); // SDI
sei();
for (uint8_t j=0;j‹16;j++) {
for (uint8_t i=0;i‹16;i++) {
if (((i==15) && (j‹15)) || ((i==13) && (j›14))) {
PORTB |= _BV(PB0); // LE -› 1
}
PORTB &= ~_BV(PB1); // DCLK -› 0
_delay_us(50);
PORTB |= _BV(PB1); // DCLK -› 1
_delay_us(50);
if (i==15) {
PORTB &= ~_BV(PB0); // LE -› 0
}
}
PORTB &= ~_BV(PB1); // DCLK -› 0
_delay_us(50); // Пауза между каждым выводом
}
while (1) {
}
} |
Что я не так делаю?