Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 cze 2024, o 05:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 9 gru 2013, o 21:36 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
napisałem program do starowania silnika tak, aby po 1. wciśnięciu przyciska obroty były lewe, a po 2. prawe i analogicznie później. Miałem kilka błędów, ale udało mi się z nimi uporać, ale z tym nie:

Compiling C: silnik.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./silnik.lst -std=gnu99 -MMD -MP -MF .dep/silnik.o.d silnik.c -o silnik.o
silnik.c: In function 'main':
silnik.c:21: error: called object '0' is not a function
make.exe: *** [silnik.o] Error 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Z góry dziękuje :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 21:44 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27264
Lokalizacja: Szczecin
Pomógł: 1041

Camillo123 napisał(a):
if (i=0 (i%1==0) (i=i+1))


to spróbuj wytłumaczyć co ma niby robić ta linia ? może jak rozwiniesz to - to sam sobie nawet odpowiesz, a jak nie to oczywiście pomożemy ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 21:55 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Chodzi o to:
jeżeli liczba przyciśnięć Micro Switch'a jest nieparzysta to jest wykonywana ta instrukcja, z każdym kliknięciem "i" (liczba przyciśnięć) zwiększ się o jeden, a początkowo wynosi 0.
Bardzo prawdopodobne, że to źle zapisałem :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 22:34 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27264
Lokalizacja: Szczecin
Pomógł: 1041

no niestety totalnie źle - tzn kolega nie do końca rozumie jak stosuje się po prostu tak podstawowe słowa kluczowe języka C jak warunki IF :(

w skrócie

if( wyrażenie ) ....zrób_coś....

czyli jeśli wyrażenie jest prawdziwe to wykonaj to co jest dalej

przy czym wyrażenie logiczne może być proste lub złożone. Jeśli proste to np:

if( a == c ) ....

a jeśli złożone to stosujemy operatory logiczne np && lub ||

if( a==c && w==2 ) ....

czyli jeśli a jest równe c a także w jest równe 2 to spełnij warunek

tymczasem kolega powpisywał w nawiasach jakieś przedziwne rzeczy niestety :( no i stąd równie przedziwny komunikat

posiada może kolega Blueboka ?

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

jeśli nie to polecam od niego zacząć, myślę, że wiele rzeczy się w głowie wyjaśni - nie tylko warunki if

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 23:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2013
Posty: 93
Lokalizacja: Piotrków Trybunalski
Pomógł: 1

Kolego Camillo123 :)
Na początku spróbuj sobie wyjaśnić jak to ma działać :)
Masz na początku licznik i = 0. Ważne słowa 'na początku' ;) dalej w nieskończonej pętli while z każdym jej obrotem następuje inkrementacja - wartość licznika zwiększa się o 1 za każdym kółkiem ;) za każdym obrotem pętli automatycznie jest sprawdzany warunek, czy wartość licznika jest nieparzysta ( i % 2 == 1 ). Jeżeli tak, to mają się wykonać określone instrukcje :)
Spróbuj przeanalizować swój program z moim tokkem myślenia i odpowiednio go naprawić :)
Lekka modyfikacja i będzie fruwało w tym miejscu :D
Pozdrawiam ;)
Waszek

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 14:35 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
udało mi się napisać program bez błędów i ostrzeżeń ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dzięki wielkie za pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 16:45 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 14:23 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 16:57 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
jeszcze raz poprawiłem kod. Czy teraz jest on poprawny? Z góry dziękuje.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 18:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2013
Posty: 93
Lokalizacja: Piotrków Trybunalski
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Według mnie powinno hulać już, poprawiłem lekko kod, no bo zmienna zwiększa się za każdym razem nie zależnie od warunku ;)
i % 2 == 0 - to sprawdza czy i jest parzyste :)
% to dzielenie modulo, czyli wynikiem jest reszta z dzielenia. Jeżeli liczba jest parzysta, to liczba z dzielenia przez dwa jest równa zero, w przeciwnym wypadku jest równa 1.
Jeżeli chodzi o stronę elektroniczną, pytaj starszych Kolegów ;)
Zastanawiam się tylko nad tym, jak wyczerpie się zakres, który obsługuje tę zmienną. Co wtedy się stanie? Czy koło się zamknie i znowu zostanie liczona od 0 ta zmienna?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 19:05 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
zmniejszyłem czas DC_STOP; do 50ms, Efekt jest taki: silnik kręci się raz w prawo, raz w lewo(prawidłowo), lecz raz na jakiś czas zdarza mu się dwa lub trzy razy obrócić w prawo lub lewo :( Wie ktoś jak temu zaradzić? Z góry dziękuje :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 19:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2013
Posty: 93
Lokalizacja: Piotrków Trybunalski
Pomógł: 1

Spróbuj ustawić na początku i = 0 ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 19:16 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Po zmianie błąd powtarza się jeszcze częściej :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 19:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2013
Posty: 93
Lokalizacja: Piotrków Trybunalski
Pomógł: 1

Stawiałbym na jakiś tyci błąd w liniach 7. - 9., jednak niestety będę mógł to później przeanalizować ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2013, o 19:45 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Wątpię by błąd był w tych liniach... Sądzę, że to coś z "i"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2013, o 19:32 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
błąd był w obsłudze Micro Switcha. Kod zmodyfikowałem, więc już problem z przyciskiem nie powinno być, lecz teraz silnik kręci się cały czas :(
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2013, o 20:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

looknij na PW


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 18:06 
Offline
Nowy

Dołączył(a): 08 gru 2013
Posty: 18
Pomógł: 0

Witam,
udało mi się rozwiązać problem :D
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 18:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Noo Brawo ...
ale ... a zresztą ważne że działa

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 19:47 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

SunRiver napisał(a):
Noo Brawo ...
ale ... a zresztą ważne że działa

No Sun powiedz, że te delaye to masakra jest.
Oczywiście najważniejsze, że ruszyło i działa jednak trzeba przystąpić do poprawienia kodu
pod kątem eliminacji tych delay'ów

------------------------ [ Dodano po: 1 minucie ]

trochę się też Koledze formatowanie "rozjechało" ;-)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2013, o 21:15 
Offline
Nowy

Dołączył(a): 06 kwi 2013
Posty: 11
Lokalizacja: Warszawa
Pomógł: 0

Powiedziałbym, że nie tylko delay jest problemem.
W skrócie:
-zmienna key_lock - pozostałość po poprzednich wersjach kodu
-zmienna i - nie jest zerowana- wiadomo, że jak dojdzie do 255 to po kolejnej instrukcji zrobi się 0, ale chyba jakiś porządek musi być
-zamiast tego
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
napisałbym else if'a- chociaż różnica żadna



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO