Вот, озадачился такой, на первый взгляд, простой ерундой. Как подключить 24 релюшки к одному микроконтроллеру. Да еще и ножки микросхемы сэкономить. Конечно же 74hc595!!!
Да не тут то было. Если с двумя регистрами проблем никаких не возникало, то с тремя, что то пошло не так.
Пишу в AtmelStudio на Си.
Так я обьявляю порты
Код: Выделить всё
#define DS_PORT PORTD
#define DS_PIN 3
#define ST_CP_PORT PORTD
#define ST_CP_PIN 4
#define SH_CP_PORT PORTA
#define SH_CP_PIN 4
#define DS_low() DS_PORT&=~ (1 << DS_PIN)
#define DS_high() DS_PORT|= (1 << DS_PIN)
#define ST_CP_low() ST_CP_PORT&=~ (1 << ST_CP_PIN)
#define ST_CP_high() ST_CP_PORT|= (1 << ST_CP_PIN)
#define SH_CP_low() SH_CP_PORT&=~ (1 << SH_CP_PIN)
#define SH_CP_high() SH_CP_PORT|= (1 << SH_CP_PIN)Код: Выделить всё
void output_led_state(unsigned long int __led_state)
{
SH_CP_low();
ST_CP_low();
for (long int i=0;i<24;i++)
{
if (((1 << i) & __led_state) == (1 << i))
DS_high();
else
DS_low();
SH_CP_high();
SH_CP_low();
}
ST_CP_high();
}Код: Выделить всё
output_led_state(0b000000010000000000000000);Вопрос, что я делаю не так???
В архиве схема и прошивка
- Вложения
-
- proyeck.rar
- (18.94 КБ) 195 скачиваний


