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

Problem z robotem line follower na attiny13

modelarztt01 20 Sty 2011 19:46 2956 20
REKLAMA
  • #1 9033546
    modelarztt01
    Poziom 16  
    Witam mam taki problem że chcę zrobić pierwszego line followera na mikroprocesorze na attiny13. Schemat jest taki i nie mój;
    Problem z robotem line follower na attiny13
    Zlutowałem wszystko i tylko zmieniłem z diody ir i fototranzystorów na KTIR0711S i nic nie działa. Czujniki kładę na białe pole i nic na czarne też. Diody ir w czujniku działają bo patrzyłem na nie aparatem. Program jest taki też nie mój;

    .include "tn13def.inc"
    
    .def status=r20
    .def left=r21
    .def center=r22
    .def right=r23
    .def temp=r17
    
    .org $000
    ldi r16,ramend
    out spl,r16
    ldi temp,3
    out ddrb,temp
    ldi temp,$87
    out adcsra,temp
    
    loop:
    rcall sense
    
    cp center,left
    brcs notcenter
    cp center,right
    brcs notcenter
    ldi temp,3
    out portb,temp
    rjmp loop
    notcenter:
    cp right,left
    brcs pc+4
    ldi temp,2
    out portb,temp
    rjmp loop
    ldi temp,1
    out portb,temp
    rjmp loop
    
    sense:
    ;prawy
    ldi temp,$21
    out admux,temp
    sbi adcsra,adsc
    nop
    nop
    nop
    sbis adcsra,adif
    rjmp pc-1
    sbi adcsra,adif
    in right,adch
    
    ;lewy
    ldi temp,$22
    out admux,temp
    sbi adcsra,adsc
    nop
    nop
    nop
    sbis adcsra,adif
    rjmp pc-1
    sbi adcsra,adif
    in left,adch
    
    ;srodek
    ldi temp,$23
    out admux,temp
    sbi adcsra,adsc
    nop
    nop
    nop
    sbis adcsra,adif
    rjmp pc-1
    sbi adcsra,adif
    in center,adch
    
    ret 


    Proszę o pomoc
  • REKLAMA
  • #2 9034658
    LordBlick
    VIP Zasłużony dla elektroda
    Pytanie podstawowe : orientujesz się w tym kodzie ?
    Pytanie dodatkowe: czego oczekujesz od czytających to forum - mamy przyjść tobie do domku z przyrządami i wszystko obadać ? ;)
  • REKLAMA
  • #3 9034670
    modelarztt01
    Poziom 16  
    No właśnie nie za bardzo.
  • #5 9034696
    modelarztt01
    Poziom 16  
    Może żeby doradzili dlaczego może nie dzialac?
  • #6 9034718
    LordBlick
    VIP Zasłużony dla elektroda
    Skoro ktoś to zaprojektował, uruchomił i opisał, to szukaj przyczyny po swojej stronie. Miernik w garść i sprawdzaj odbiorniki, czy reagują na światło i jakie są zmiany napięcia na wejściach µC.
  • #7 9034860
    modelarztt01
    Poziom 16  
    No to tak czujniki sa dobre i gdy czujnik widzi biala linie to jest napiecie okolo 4.8v a gdy nic nie widzi to 0.2v.
  • REKLAMA
  • #9 9036023
    piotrva
    VIP Zasłużony dla elektroda
    a może spróbuj sam napisać oprogramowanie i zrozumieć jak działa?
    bo tak niewiele zdziałasz ...
  • REKLAMA
  • #10 9042144
    modelarztt01
    Poziom 16  
    To spróbowałem zrobić coś w bascomie i wyszło mi takie coś i czy to się do czegoś nadaje czy nie? Oto program;
    '***** konfiguracja portów *****
    $regfile = "attiny13.dat"
    
    
    Sensor1 Alias Portd.7 Czujnik Lewy
    Sensor2 Alias Portd.3 Czujnik Srodkowy
    Sensor3 Alias Portd.2 Czunik Prawy
    Config Pind.7 = Input Czujnik Lewy
    Config Pind.3 = Input Czujnik Srodkowy
    Config Pind.2 = Input Czujnik Prawy
    
    Config Pinb.5 = Output
    Config Pinb.6 = Output
    
    If Pind.7 = 1 And Pind.3 = 0 And Pind.2 = 0 Then Lewo
    If Pind.7 = 1 And Pind.3 = 1 And Pind.2 = 0 Then Lewo
    If Pind.7 = 0 And Pind.3 = 1 And Pind.2 = 1 Then Prawo
    If Pind.7 = 0 And Pind.3 = 0 And Pind.2 = 1 Then Prawo
    If Pind.7 = 1 And Pind.3 = 0 And Pind.2 = 1 Then Naprzod
    If Pind.7 = 1 And Pind.3 = 1 And Pind.2 = 1 Then Naprzod
    
    End If
    
    End                                                         'end program
  • #12 9042354
    modelarztt01
    Poziom 16  
    I jeszcze jest napisany w asmeblerze. Ale czy ten w bascomie jest dobry czy nie ?
  • #13 9042382
    LordBlick
    VIP Zasłużony dla elektroda
    Ja z Bascom-a jestem noga (najbardziej mogę pomóc z asemblera), ale mam wrażenie, ze tu nie ma pętli głównej...
  • #14 9042422
    modelarztt01
    Poziom 16  
    Ja w bascomie się dopiero uczę a asemblera wcale nie znam. A chciałbym się dowiedzieć czy w ty co zrobiłem są jakieś błędy i czy ktoś by mógł poprawić ewentualne błędy.
  • #15 9044304
    bogdan_p
    Poziom 39  
    Rozumiem że jesteś początkujący w Bascomie ale wypadało przyjemniej zajrzeć do pomocy w Bascomie oraz do dokumentacji ATTiny 13 http://www.atmel.com/dyn/resources/prod_documents/doc2535.pdf . Nie sądzę że jesteś autorem tego programu , po prostu przekopiowałeś coś bez niezastanowienie się nad nim :
    - gdzie w ATTiny 13 masz port D
    - gdzie masz w ATTiny 13 porty nr 6 i 7
    - deklarujesz nazwy a w warunkach z nich nie korzystasz
    - po spełnieniu warunku gdzie ma skoczyć program , jak wcale nie masz żadnych podprogramów lewo / prawo / naprzód
    - brak pętli głównej programu .
    Teraz sam sobie odpowiedz czy program może działać !
    Wystarczyło zerknąć na schemat i wiedziałbyś jakie są porty , pomijam już fakt że chcąc skorzystać z PB5 ( Reset ) pozbawiasz się możliwości programowania przez SPI . Ogólny zarys programu powinien wyglądać tak :

    Declaracja Procesora
    Declaracja Częstoliwości Pracy
    
    Configuracja Portów > Ustawienie Trybu Pracy Wejscie / Wyjście
    Ustawienie Portów > Ustawinie Stanów Początkowych Jeżeli Jest To Konieczne
    
    Declaracja Podprogramów > Nazwy Symbliczne Podprogramów
    
    Pętla Główna Programu
    
    Do > Początek Pętli
    
    If Warunek Lub Warunki Then Po Spełnieniu Skok Do Podprogramu
    Dalsze Warunki ................
    
    End If
    
    Loop > Koniec Pętli
    
    Podprogramy
    
    Nazwa Podprogramu
    Polecenie Co Ma Być Wykonane > Np. Zmiana Stanu Danego Portu
    Inne Polecenia ...........
    
    End Sub
    
    Inne Podprogramy ......
     
  • #17 9046818
    modelarztt01
    Poziom 16  
    No to od czasu gdy tu jeszcze bogdan_p nie napisał. To trochę doczytałem i powstał taki kod
    '***** konfiguracja portów *****
    $regfile = "attiny13.dat"
    
    Config Pinb.7 = Input
    Config Pinb.3 = Input
    Config Pinb.2 = Input
    
    
    Config Pinb.5 = Output
    Config Pinb.6 = Output
    
    Do
    If Pinb.7 = 1 Then Pinb.5 = 1
    If Pinb.7 = 1 And Pinb.3 = 1 Then Pinb.5 = 1
    If Pinb.3 = 1 And Pinb.2 = 1 Then Pinb.6 = 1
    If Pinb.2 = 1 Then Pinb.6 = 1
    
    If Pinb.7 = 1 And Pinb.2 = 1 Then Pinb.6 = 1 Else Pinb.5 = 1
    
    If Pinb.7 = 1 And Pinb.3 = 1 And Pinb.2 = 1 Then Pinb.6 = 1 And Pinb.5 = 1
    
    
    Loop
    
    End                                                         'end program
    
    
    If Pinb.7 = 1
    
    
    i teraz próbuję zmienić te 3 parametry w końcowej lilii bo nie chce kompilować.
  • #18 9046936
    adambehnke
    Poziom 24  
    Nie ma takiej możliwości aby skompilowało poprawnie.
    Nie dość że ostatni warunek znajduje się poza pętlą główną to co ma być wynikiem ?

    Jeśli pinb.7 = 1 to ?????????????

    Powinieneś jeszcze raz na spokojnie poczytać o IF THEN ELSE itd. oraz o DO LOOP
  • #19 9047670
    arktik1
    Poziom 27  
    I od kiedy ATTINY 13 ma PINB--6 i 7?
  • #20 9048338
    bogdan_p
    Poziom 39  
    Kolego długa droga jeszcze przed Tobą , a szczególnie czytanie z zrozumieniem kilka postów wcześniej napisałem o PB 6,7 Ty nadal swoje , również o PB 5 , ciekawe czy zerknąłeś na schemat czy do dokumentacji ?
    Aby używać portu PB5 musisz go skonfigurować jako port automatycznie pozbywając się jego standardowej funkcji Reset czyli jak chcesz go zaprogramować przez SPI bo na pewno z takiego programatora korzystasz , no chyba że masz programator równoległy . Masz gotowy schemat dlaczego nie korzystasz z niego :
    - PB0 , PB1 > wyjścia
    - PB2 , PB3 , PB4 > wejścia
    Zacznij od pomocy Bascoma i zobacz jak wyglądają konkretne przykłady danej funkcji . Tak z ciekawości jaki masz programator i jak zaprogramowałeś wcześniej ATTiny 13 ? , przecież autor zamieścił tylko kod źródłowy tak więc w czym go skompilowałeś do hex. lub bin.
  • #21 9050300
    modelarztt01
    Poziom 16  
    Skompilowałem do pliku hex a programator to USBasp.
REKLAMA