logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Attiny13 - PORTB.5 zwarty, problem z uruchomieniem silnika krokowego

_pieczas 07 Kwi 2012 14:34 1415 6
  • #1 10767420
    _pieczas
    Poziom 12  
    Słuchajcie, chciałem uruchomić silnik krokowy (bipolarny - 4 wyprowadzenia) za pomocą l293d i attiny13. Sam silnik krokowy i mostek chciałbym pominąć bo prawdopodobnie nie w tym leży problem. Mianowicie, chodzi o to, że dziwna sytuacja następuje na poziomie attiny. Sygnał na mostek podawany jest z PORTB.1 - PORTB.4 a PORTB.0 i PORTB.5 to wejscia.
    Silnik ma zostać załączony gdy PORTB.0 lub PORTB.5 będą zwarte do masy. Mam taki kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    rzecz w tym, że w tej chwili program działa. Jednak gdy wyrzucę znak komentarza z sekcji odpowiedzialnej za sterowanie z Portb.5 to silnik cały czas się kręci. Jeśli wyrzucę sterowanie poprzez zwarcie potrb.0 i zostaje tylko portb.5 to również silnik wciąż jest załączony. Wniosek z tego taki, że warunek
    Kod: text
    Zaloguj się, aby zobaczyć kod
    wciąż jest prawdą niezależnie od tego czy portb.5 jest zwarty czy nie.
    Czy taka sytuacja jest normalna i coś przeoczyłem czy wina leży po stronie technicznej procesora? Nie jest on oczywiście świeży bo pracował w innych układach i jest raczej z odzysku, ale to chyba nie powinno mieć znaczenia jeśli całość działa poprawnie.
    Nie angażując mostka i silnika tylko na płytce testowej podpinając diody (oczywiście czas wait zmieniam na dostatecznie duży aby zauważyć miganie) sytuacja ma sie tak samo.
  • #2 10767523
    mirekk36
    Poziom 42  
    _pieczas napisał:
    .... czy wina leży po stronie technicznej procesora? .


    Ty się nigdy nie doszukuj błędów technicznych po stronie procesora tylko szukaj ich u siebie - bo tak to stracisz jeszcze mnóstwo czasu na programowanie albo się zniechęcisz.....

    Proponuję ci zajrzeć do noty PDF tego procka i zobaczysz, że PB5 to pin RESET który wykorzystujesz do programowania. Więc jak chcesz żeby ci działał jako wejście ???? hmmmm ???? Można wprawdzie za pomocą fusów zmienić żeby ten pin działał jako zwykły porto I/O ale UWAŻAJ! stracisz wtedy możliwość programowania procka przez ISP ....

    teraz jaśniej ?
  • #3 10769644
    _pieczas
    Poziom 12  
    Pisząc wina po stronie procesora miałem na myśli jego wyeksploatowanie albo coś w tym stylu. Do programowania również służą MISO MOSI i SCK, które są normalnie portami I/O. Dobra, chociaż wiem, że nic nie zrobię w ten sposób. Dzięki za odpowiedź.
  • #4 10769923
    mirekk36
    Poziom 42  
    _pieczas napisał:
    Pisząc wina po stronie procesora miałem na myśli jego wyeksploatowanie albo coś w tym stylu.


    No to ci właśnie na to odpowiedziałem - to nie ma związku z żadnym wyekspoatowaniem. Prędzej my znikniemy z naszego świata i twoje wnuki zanim taki procek się wyeksploatuje ;)

    _pieczas napisał:
    Do programowania również służą MISO MOSI i SCK, które są normalnie portami I/O. Dobra, chociaż wiem, że nic nie zrobię w ten sposób. Dzięki za odpowiedź.


    No ale RESET zauważ to nie to samo co MOSI, MISO i SCK - taka mała subtelna różnica jest między nimi.
  • #5 10770354
    gaskoin
    Poziom 38  
    Jakby w tak trywialnych rzeczach jak IO uC miał błąd techniczny to nikt by go nie używał.
  • #6 10774502
    Konto nie istnieje
    Konto nie istnieje  
  • #7 10778498
    _pieczas
    Poziom 12  
    marcin387 napisał:
    Zauważyłem u Kolegi drobny błąd w programie, po wyjściu programu z instrukcji IF... End If na silnik dalej idzie prąd, może to mieć znaczenie jeżeli program z jednego warunku nie wejdzie w drugi. W rozwiązaniu problemu z przyciskami może pomógłby wewnętrzny przetwornik ADC, trzeba by zamienić Pinb.0 z którymś wyjściem silnika które obsługuje ADC. Podłączenie przycisków zrobiłbym na dzielniku napięcia łącząc je szeregowo od +5V do masy, przykładowo R1(330R),R2(2K),R3(2K) a przyciski równolegle do R2,R3. Pierwszy opornik to zabezpieczenie w przypadku wciśnięcia dwóch przycisków równocześnie.


    To raczej będe sobie darował. Generalnie idea była taka, że silnik ma się obracac prawo/lewo i być sterowany pilotem RC5. Oczywiście rzecz działała,ale przy współpracy z "getrc5" wszytko działało tak wolno, że zrezygnowałem i stwierdziłem, że będzie to zwierane ręcznie, ewentualnie inny attiny13 (bo to akurat mam pod ręką) odbierałby kod rc5 i dawał sygnał na portb.0 i portb.5 tego procka, który odpowiedzialny jest za kontrole silnika, no ale zasada ta sama. ( niekoniecznie mus być zwierany, może też być stan wysoki ). Chodziło mi tylko o rozwiązanie problemu co z tym pb.5. Fakt, nigdy wcześniej go chyba nie wykożystywałem ( dy potrzebowałem więcej pinów IO brałem attiny2313 ale ten pewnie będzie niewiele szybszy) więc stąd to niedopatrzenie.
REKLAMA