Стоят 3 сдвиговых регистра, подключил как тут. Работают только 2 из 3, третий как-то странно себя ведет Вот код управления ими: Код (C++): void write(uint32_t data) { for(uint32_t i = 0; i < 24; i++) { if((data >> i)%2) SetBit(DATA_PORT, DATA_BIT); else ClearBit(DATA_PORT, DATA_BIT); _delay_ms(1); SetBit(SHCP_PORT, SHCP_BIT); _delay_ms(1); ClearBit(SHCP_PORT, SHCP_BIT); } _delay_ms(1); SetBit(STCP_PORT, STCP_BIT); _delay_ms(1); ClearBit(STCP_PORT, STCP_BIT); }
Сигнальная линия нагружена зачем-то микрофарадом - спалит пин со временем. Не читайте статьи на торгашеских сайтиках. В 99% случаев они переписаны с другого сайта каким-нибудь найденным в интернете ничего в этом не понимающим человеком. Это делается для поисковой оптимизации, а не для вашего образования.
Код (C++): #define DATA_PORT PORTC #define DATA_BIT 3 #define SHCP_PORT PORTC #define SHCP_BIT 1 #define STCP_PORT PORTC #define STCP_BIT 2 DDRC = (1<<1)|(1<<2)|(1<<3);
Открываем даташит на регистр и смотрим, по какому перепаду сигнала происходит загрузка данных, сдвиг и т.д... Потом смотрим на инициализацию порта С.