Witam,
napisałem taki program, niestety wydaje mi się, że żadne sygnały nie wchodzą na ULN'a ...
Coś źle robie? Bo od niedawna wziąłem się za programowanie i niewiele jeszcze umiem.
Kod:
#include <avr/io.h>
#include <util/delay.h>
#define DIR PD3
#define CLOCK PD2
#define ENABLE PD7
#define HALF PD4
void io_init (void) // Ustawienia pinów
{
DDRD |= 0b10011100;
}
//*****************************************************************
void left (void) // Kręcenie w lewo
{
PORTD |= (1<<DIR);
}
//*****************************************************************
void krok (void) // skok wirnika o określony kąt
{
PORTD |= (1<<CLOCK);
_delay_ms(20);
PORTD &= ~(1<<CLOCK);
_delay_ms(20);
}
//*****************************************************************
void zasilanie (void) // prąd płynie przez silnik
{
PORTD |= (1<<ENABLE);
}
//*****************************************************************
void RODZAJ (void) // sterowanie półkrokowe
{
PORTD |= (1<<HALF);
}
//*****************************************************************
int main (void) // Początek programu
{
io_init();
zasilanie();
RODZAJ();
left();
while (1) // pętla główna
{
krok();
}
}
Dodam również, że sterowanie silnikiem za pomocą samych ULN'ów odbywało się prawidłowo (inny kod) ale nie było dość efektywne. Dorzuciłem więc L297 żeby uzyskać większą moc ale nie wiem gdzie robie błąd.
schemat:

VCC - 5V
VCCIO - 12V