Chciałem sobie zrobić sterownik silnika krokowego na układach PBL3960 + PBL3771 linki do dokumentacji:
W dokumentacji jest nawet schemat wewnętrzny układu PBL3960 rozbity na pojedyncze przerzutniki i bramki logiczne. Pisze trochę w akcie desperacji :) niby rozumie jak to wszystko powinno działać (a może mi się tylko wydaje), a nie działa :( próbowałem na różne sposoby to poustawiać i nic. Ten niżej przedstawiony kod najlepiej działa bo ustawia przynajmniej jedno z wyjść przetwornika no ale gdy próbuje ustawić kolejne wyjście to nie wiem dlaczego pierwsze przestawia się razem z nim :( i to w dość losowy sposób. Dałem już nawet za każdą instrukcje opóźnienie :) na 10ms.
sbi(PORTD,RESET); // RESETUJE UKŁAD PBL3960 TUTAJ WSZYSTKO GRA delay(10); // I NA WYJŚCIACH D/A PO RESECIE MAM 0V
cbi(PORTD,WR); delay(10); sbi(PORTD,WR); delay(10);
cbi(PORTD,RESET); delay(10); // KONIEC RESETU
sbi(PORTD,A0); //DA2 USTAWIAM KANAŁ DRUGI delay(10);
PORTB=40; // 1.41 delay(10);
cbi(PORTD,WR); delay(10); // DO TEGO MOMENTU JEST WSZYSTKO DOBRZE BO GDY PRZERWE DZIEŁANIE //WHILE(1); // PROGRAMU W TYM MOMĘCIE WSTAWIAJĄC NP. WHILE(1); TO NA KANALE DRUGIM sbi(PORTD,WR); // USTAWIA MI SIĘ 1.41V CZYLI TYLE ILE POWINNO delay(10);
cbi(PORTD,A0); //DA1 USTAWIAM KANAŁ PIERWSZY delay(10);
PORTB=80; // 2.82 delay(10);
cbi(PORTD,WR); delay(10);
TUTAJ NIE USTAWIŁEM CELOWO WR PONIEWAŻ WTEDY NA PRZETWORNIKACH DA JEST ZAWSZE 0V I NIE MOŻNA SPRAWDZIĆ CZY SIĘ POPRAWNIE USTAWIŁY. W KAŻDYM RAZIE NA TYM ETAPIE PROGRAMU DZIEJĄ SIĘ CUDA :) PO PIERWSZE PRZESTAWIA SIĘ KANAŁ DRUGI RAZEM Z KANAŁEM PIERWSZYM (A W ZAŁOŻENIU POWINIEN TYLKO PIERWSZY) DO TEGO CO PARĘ URUCHOMIEŃ PROGRAMU POJAWIAJĄ SIĘ NA TYCH WYJŚCIACH RÓŻNE WARTOŚCI NP. DA1=2.83 DA2=4.0V A JAK URUCHOMIĘ PROGRAM PO RAZ DRUGI TO DOSTAJĘ NP. DA1=4.0V DA2=4.0V
Może ktoś kurde programował z powodzeniem ten układ i ma gotowy kod do jego wysterowania? Albo po przeczytaniu dokumentacji wykryje jakiś błąd w moim kodzie.