bart989 Napisano Kwiecień 17, 2012 Udostępnij Napisano Kwiecień 17, 2012 Zbliżają się Bydgoskie walki robotów i mam mały problem z programem. Stosuje płytkę otrzymaną od UTP, ale napisałem do niej własny program, czy ktoś może mi wytłumaczyć gdzie jest błąd. Przy kompilowaniu nie wyrzuca błędów zgrywa się na płytkę też poprawnie jednak płytka nie reaguje na żaden z czujników. $regfile = "m32def.dat" $crystal = 14000000 Config Pina.0 = Input Config Pina.1 = Input Config Pina.2 = Input Config Pina.3 = Input Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Input Config Pinc.0 = Input Config Pinc.1 = Input Config Pind.4 = Input Config Pind.5 = Input Config Pinb.5 = Output Config Pinb.7 = Output Config Pind.2 = Output Config Pind.3 = Output Config Servos = 2 , Servo1 = Portd.5 , Servo2 = Portd.4 , Reload = 5 Dist1 Alias Pina.0 'Lewy przedni Dist2 Alias Pina.1 'Prawy przedni Dist3 Alias Pina.2 'Lewy tylni Dist4 Alias Pina.3 'Prawy tylni Grd1 Alias Pinb.0 'Lewy przedni Grd2 Alias Pinb.1 'Prawy przedni Grd3 Alias Pinb.2 'Lewy tylni Grd4 Alias Pinb.3 'Prawy tylni Sil1k Alias Pinc.0 'Kierunek silnika 1 0to do przodu 1 do tyłu Sil2k Alias Pinc.1 'Kierunek silnika 2 Sil1m Alias Pind.4 'Moc silnika 1 Sil2m Alias Pind.5 'Moc silnika 2 Config Watchdog = 1024 Start Watchdog Enable Interrupts Reset Porta.0 Reset Porta.1 Reset Porta.2 Reset Porta.3 Reset Portb.0 Reset Portb.1 Reset Portb.2 Reset Portb.3 Poczatek: Waitms 5000 Do Restartpetli: 'sprawdzanie groundow If Grd1 = 1 And Grd2 = 0 And Grd3 = 0 And Grd4 = 0 Then Sil1k = 0 Sil2k = 0 Servo(1) = 50 Servo(2) = 25 Waitms 50 Goto Restartpetli End If If Grd1 = 1 And Grd2 = 1 And Grd3 = 0 And Grd4 = 0 Then Sil1k = 0 Sil2k = 0 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Grd1 = 0 And Grd2 = 1 And Grd3 = 0 And Grd4 = 0 Then Sil1k = 0 Sil2k = 0 Servo(1) = 25 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Grd1 = 0 And Grd2 = 0 And Grd3 = 1 And Grd4 = 0 Then Sil1k = 1 Sil2k = 1 Servo(1) = 50 Servo(2) = 25 Waitms 50 Goto Restartpetli End If If Grd1 = 0 And Grd2 = 0 And Grd3 = 1 And Grd4 = 1 Then Sil1k = 1 Sil2k = 1 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Grd1 = 0 And Grd2 = 0 And Grd3 = 0 And Grd4 = 1 Then Sil1k = 1 Sil2k = 1 Servo(1) = 25 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Grd1 = 1 And Grd2 = 0 And Grd3 = 1 And Grd4 = 0 Then Sil1k = 0 Sil2k = 1 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Grd1 = 0 And Grd2 = 1 And Grd3 = 0 And Grd4 = 1 Then Sil1k = 1 Sil2k = 0 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If 'DISTY If Dist1 = 0 And Dist2 = 0 And Dist3 = 0 And Dist4 = 0 Then Sil1k = 1 Sil2k = 0 Servo(1) = 20 Servo(2) = 20 Waitms 50 Goto Restartpetli End If If Dist1 = 1 And Dist2 = 0 And Dist3 = 0 And Dist4 = 0 Then Sil1k = 0 Sil2k = 0 Servo(1) = 20 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Dist1 = 1 And Dist2 = 1 And Dist3 = 0 And Dist4 = 0 Then Sil1k = 0 Sil2k = 0 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Dist1 = 0 And Dist2 = 0 And Dist3 = 1 And Dist4 = 0 Then Sil1k = 1 Sil2k = 1 Servo(1) = 20 Servo(2) = 50 Waitms 50 Goto Restartpetli End If If Dist1 = 0 And Dist2 = 0 And Dist3 = 0 And Dist4 = 1 Then Sil1k = 1 Sil2k = 1 Servo(1) = 50 Servo(2) = 20 Waitms 50 Goto Restartpetli End If If Dist1 = 0 And Dist2 = 0 And Dist3 = 1 And Dist4 = 1 Then Sil1k = 1 Sil2k = 1 Servo(1) = 50 Servo(2) = 50 Waitms 50 Goto Restartpetli End If Loop End SUMO2M.pdf sumo_base_4.pdf Cytuj Link do komentarza Share on other sites More sharing options...
pierzchan Kwiecień 17, 2012 Udostępnij Kwiecień 17, 2012 Nieprawidłowa składnia, poczytaj o używaniu etykiet czyli gdzie się je wstawia, jak kończy i jak wywołuje. Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Kwiecień 17, 2012 Udostępnij Kwiecień 17, 2012 Pierwszy grzech młodych programistów. - używanie instrukcji goto zamiast zapisu proceduralnego. - po co używasz WATCH DOGa, który pewnie restartuje ci procesor ? To owszem jest rodzaj timera, ale do zastosowań specjalnych. - odblokowujesz system przerwań, ale nie odblokowujesz żadnego wektora przerwań instrukcją Enable xxxx. itd. itd.. Cytuj Link do komentarza Share on other sites More sharing options...
dondu Kwiecień 17, 2012 Udostępnij Kwiecień 17, 2012 "Czeski błąd" - dwa kwarce przy uC. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
bart989 Kwiecień 17, 2012 Autor tematu Udostępnij Kwiecień 17, 2012 Nie dokońca rozumiem Wasze wskazówki. Problem jest taki, że nie ja to pisałem, a gość który teoretycznie się na tym zna i to napisał teraz się ulotnił i nie mam się gdzie z tym zwrócić. Mam książkę Piotra Góreckiego "Mikrokontrolery dla początkujących" trochę poczytałem, ale wciąż mam problemy, więc gdyby ktoś mógł odrobinę bardziej łopatologicznie to byłbym wdzięczny. Cytuj Link do komentarza Share on other sites More sharing options...
BlackJack Kwiecień 18, 2012 Udostępnij Kwiecień 18, 2012 🙂 Problem jest taki, że nie ja to pisałem, a gość który teoretycznie się na tym zna i to napisał teraz się ulotnił i nie mam się gdzie z tym zwrócić. Jak myślisz czemu się ulotnił ? Ogólnie program jest tak napisany że woła o pomstę do nieba. Ale szczerze mówiąc, jak bym miał poświęcić 2h na próbę reanimacji tego czegoś, to wolałbym napisać nowy program od zera. Szybciej napiszesz sam nowy program z książką w ręku niż ożywisz to coś. A przynajmniej czegoś się nauczysz. Ja rozumiem, że jesteś osobą początkującą, ale tym bardziej powinieneś sam spróbować to zrobić. Pomału krok po kroku, a nie ze stoperem w ręku, bo za tydzień są zawody. Co jest największym błędem początkujących ? 1. Nie posiadają wiedzy o podstawach (tak elektroniki jak i programowania) i próbują od razu stworzyć kompletny działający program. 2. Patrz punkt 1. Programowanie ma to do siebie że nie da się ogarnąć wszystkiego na raz. Napisałem że grzechem jest instrukcja Goto, bo jest i to ciężkim. Po pierwsze znacznie utrudnia analizę programu i powoduje że staje się on nieczytelny. a źle używana, powoduje często jego zawieszanie. Dla tego należy zainteresować się, procedurami i funkcjami, które dzielą program na logiczne bloki funkcyjne, takie klocki które łączymy ze sobą, jak klocki Lego, aby zbudować interesujący nas pojazd. Jak zaczynasz, weź sobie książkę najpierw opanuj podstawy, jak prosty START/STOP na jednej diodzie LED. Potem jak poznasz procedury i funkcje, Timery, przerwania, moduły sprzętowe, sam zrobisz sobie klocki w postaci procedur, z których zbudujesz swój pierwszy poważny program. Cytuj Link do komentarza Share on other sites More sharing options...
paczkaexpres Kwiecień 18, 2012 Udostępnij Kwiecień 18, 2012 Pomału krok po kroku, a nie ze stoperem w ręku, bo za tydzień są zawody. Gdyby zawody były za tydzień to się jeszcze dało by coś zrobić, problem w tym że zawody w Bydgoszczy są 19 kwietnia (czyli jutro) 😋. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!