В общем-то зря всех взбаламутил, всё работает, даже пальцами остановить не могу. Оказывается, я случайно пятью вольтами вместо двенадцати запитал. При слишком малых задержках между тактами около 1 мс не вращается, только жужжит.
Пробовал ещё управлять восемью состояниями:
int main(void) {
PORTC &= ~((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));
DDRC |= ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));
while (1) {
PORTC &= ~(1 << 0);
_delay_ms(2);
PORTC |= (1 << 2);
_delay_ms(2);
PORTC &= ~(1 << 1);
_delay_ms(2);
PORTC |= (1 << 3);
_delay_ms(2);
PORTC &= ~(1 << 2);
_delay_ms(2);
PORTC |= (1 << 0);
_delay_ms(2);
PORTC &= ~(1 << 3);
_delay_ms(2);
PORTC |= (1 << 1);
_delay_ms(2);
}
}
Вот то же самое на картинке:
Так вообще мягонько так идёт, аж насмотреться и наслушаться не могу!
Транзисторы взяты с материнки:
P0903BDG. Чо-то глянул сейчас даташит, а там параметр Gate Threshold Voltage максимум 3V. Что он означает? Что на гейт нельзя подавать больше трёх вольт? Или, что от трёх вольт он гарантировано открывается? Я их всегда пятью вольтами открывал, пока ни один не сгорел. У меня почему-то в голове отложилось, что его пятью вольтами открывать надо, а сейчас смотрю и не понимаю.