PBL3960 chora jazda :) co za pieprznięty układ

Mar 14, 2006 0 Replies

Chciałem sobie zrobić sterownik silnika krokowego na układach PBL3960 + PBL3771 linki do dokumentacji:

formatting link
No i od trzech dni mam nieudane próby wysterowania układu PBL3960 tak aby na jego wyjściach przetwornika D/A pojawiło się to co chce. Schemat mam taki jak w dokumentacji, PBL3960 ma wyprowadzenia podłączone od uC AT90S2313.



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.


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required