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



Teraz jest 30 mar 2026, o 22:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 1 gru 2012, o 21:19 
Offline
Użytkownik

Dołączył(a): 01 gru 2012
Posty: 48
Pomógł: 0

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


[ po pierwsze gorąca prośba - wyedytuj sobie ten post i sprawdź jak się daje kod źródłowy w znacznikach [ syntax = c ], żeby wyglądał tak jak teraz ok ? - mirekk36 ]

Jednak gdy go kompiluje występują błędy:
main.c:(.text+0x12): undefined reference to `_delay_ms'
main.c:(.text+0x1c): undefined reference to `_delay_ms'
make: *** [TEST2.elf] Error 1
...
../main.c:20: warning: implicit declaration of function '_delay_ms'



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2012, o 21:24 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Wiesz jemu trudno to zrozumieć bo nie wie jeszcze o jego istnieniu.
Dodaj #include <util/delay.h> wtedy będzie wiedział o co chodzi i będzie go ruzumieć ;) .


P.S Używaj operacji bitowych a nie zapisu szesnastkowego do ustawiania kierunków portów i stanów portów, ok?

Tutaj masz to ładnie wytłumaczone: http://mirekk36.blogspot.com/2012/01/av ... stawy.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2012, o 00:09 
Offline
Moderator
Avatar użytkownika

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

a teraz jeszcze jedno pytanie bo piszesz, że wrzuciłeś do Eclipsa kod programu jak wyżej - a skąd wziąłeś taki kod programu ?

_________________
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: 2 gru 2012, o 01:10 
Offline
Użytkownik

Dołączył(a): 01 gru 2012
Posty: 48
Pomógł: 0

Ten kod programu wziąłem z któregoś z kursów AVR-GCC, aby sprawdzić czy coś działa :) Najwidoczniej nie skopiowałem wszystkiego. Teraz jednak to ma mniejsze znaczenie, gdyż napisałem program który ma nie zapalać diody, ponieważ po napisaniu tego programu ciągle świeci.
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: 2 gru 2012, o 04:22 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

A czy kolega przed napisaniem posta spróbował znaleść jakiś przykładowy kod do migania diodą LED? I jeszcze jedna sprawa. Jak ta dioda wogóle jest podłączona? Anodą do Vcc czy odwrotnie? No dobra, żeby nie było że tylko się wymądrzam to błąd masz w tej linijce:
Kod:
PORTD &= ~ (0<<PD5); /* ustawiam stan wysoki (dioda się nie swieci) */


a powinno być:
Kod:
PORTD &= ~ (1<<PD5); /* ustawiam stan niski (dioda się swieci) */


PP

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2012, o 04:25 
Offline
Moderator
Avatar użytkownika

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

Piotrek_P ---> bardzo słuszna uwaga ..... dlatego pytałem autora skąd wziął ten przykładowy kod? Napisał że z jakiegoś kursu w internecie - proponowałbym jak najszybciej autorowi zabić deskami stronę z tym kursem jeśli takie przykłady można z niej pobierać :(

_________________
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: 2 gru 2012, o 13:28 
Offline
Użytkownik

Dołączył(a): 01 gru 2012
Posty: 48
Pomógł: 0

Podłączyłem katodą do uc. Mi Piotrku chodziło o to aby właśnie się nie paliła. Dlatego ustawiłem stan wysoki, bo się ciągle pali. Wpisałem sposobami co wymieniłeś, jednak ona się ciągle pali :|

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

Wtedy diody mrugają dobrze na przemian tak jak było w planie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2012, o 14:49 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Słuchaj kiba ja mam taką propozycje na zrealizowanie twojego pomysłu bez użycia dziadowskich wartości hex:


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


Ale tak jak napisałem wcześnie musisz zapoznać się z operacjami bitowymi bo inaczej to będą same problemy :( .


Dopiero teraz doczytałem że chcesz aby diody led migały naprzemiennie :oops: i napisałem taki ot program właśnie z wykorzystaniem zmiany stanu na przeciwny taki programik:

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


I w ten sposób możesz uzyskać pożądany efekt bez wpisywania wartości hex, a wykorzystując przejrzyste operacje bitowe na portach uC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2012, o 22:57 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Na początek chciałbym się ze wszystkimi przywitać :) Czynię to tutaj, bo akurat mam podobny problem jak założyciel wątku a nie znalazłem specjalnego tematu do przywitań. Tak więc, dzień dobry, a raczej dobry wieczór :)
Problem mam z Eclipse, ale to chyba nie jego wina i z funkcją _delay_ms(). Za "chiny ludowe" nie mogę go zmusić do zauważenia tejże funkcji w kodzie. Najzabawniejsze jest w tym wszystkim to, że wcześniej nie miałem tego problemu. Używałem funkcji jak chciałem, co prawda robiłem to pod ArduinoIDE, ale po przeczytaniu książki Pana Mirka przesiadłem się na Eclipse i tam ją stosowałem z tą tylko różnicą że z jakiegoś nie znanego mi powodu musiałem np. _delay_ms(1000) rozbić na cztery _delay_ms(250), ale działała. Nagle przestała, a ja nie wiem czemu.
Piszę tu z nadzieją że może ktoś z Was miał taki problem i zna rozwiązanie. Ja takiego nie znalazłem, a walczę z tym już cztery dni. W akcie desperacji przeinstalowałem system (MAC OS X 10.8.2), zainstalowałem avr-gcc na nowo, Eclipse plus plugin AVR, a problem nie zniknął :(
Być może jest tu jakiś MacUser i mi pomoże.
Poniżej kod, tak tylko dla informacji jak wygląda. Dioda podpięta do VCC. Dodam tylko że bez problemu mogę zmieniać fusbity w "prockach", kompilować i wgrywać programy w których nie występuje _delay_ms(). Zresztą te w których występuje też się kompilują bez warningów i błędów, tylko że potem jakoś nie działają.

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

_________________
http://www.marcingibas.pl



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

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

ooo żeszek ;) .... toś ty MacUser ;) .... hoo hooo ;) fajnie

Witamy na forum ;)

ok ale do kodu panowie - do kodu - szpadle w dłoń

piszesz że nie działa ci _delay_ms()

ale może byś tak panie kochanieńki, napisał co to znaczy że ci nie działa hmmm ??? ;)

ja wprawdzie nigdy nie pomagam wprost tylko zadaję dodatkowe zagadki - ale hmmm a gdybyś wypróbował pan taki kod ?

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


i jak zacznie ci w razie czego nagle cudownie działać - to sam powiedz i uzasadnij dlaczego ? ok ? to takie zadanie domowe od mikołaja ;)

_________________
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: 23 gru 2012, o 00:15 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Kurcze, ale jestem tępy. Od tego kombinowania to mi chyba mózg zaćmiło. Nie mogło działać skoro po wyłączeniu diody od razu się załączała.
No ale napiszę skąd wzięła się ta moja walka z _delay_ms(). Zachciało mi się zmajstrować termometr na wyświetlaczu 7LED. Dzięki książce udało się zrobić multipleksowanie no i przyszła pora na obsługę DS18B20, i wtedy pojawił się problem. Żeby sprawdzić czy czujnik działa, zamiast wyświetlacza 7LED podpiąłem wyświetlacz LCD. Użyłem kodu z płyty dołączonej do książki zmieniając wszystko oczywiście pod procesor z jakiego korzystałem (ATmega8). Po dokonaniu wszystkich zmian i wgraniu do "procka" na wyświetlaczu pojawiał się napis "error". Zwaliłem winę na _delay_ms() bo to ona jest wykorzystywana do oczekiwania na komunikację z czujnikiem. No a potem to się jakoś tak dziwnie potoczyło że skończyło się na koszmarkach z mojego pierwszego wpisu.
Bardzo dziękuję za wskazanie mi błędu, zaraz powtórnie powalczę z DS18B20. Tym razem jednak spokojniej.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 gru 2012, o 00:56 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
... ale opisz potem w czym był kłopot... .


Antystatyczny --> zobacz - przecież wyżej podpowiedziałem gdzie jest błąd ;) - bowiem kolega chciał migać sobie diodą tak:

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


a wg ciebie ta dioda będzie migać przy takim kodzie ;) .... nie zwróciłeś uwagi na moją sugestię, żeby kolega napisał ten kod w ciut inny sposób, o tak:

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


widzisz teraz w końcu tą różnicę (dodałem jedynie drugi _delay - halo halo - spójrz wyżej na mój post) ? ;) szybko okazało się koledze że to nie jest wina _delay - tylko kodu jaki napisał ;)

_________________
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: 23 gru 2012, o 02:23 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Kod do migania diodą był mistrzostwem :oops:

Niemniej jakiś problem wcześniej był. Teraz mogę korzystać z _delay_ms(1000) bez rozbijania na kawałki, oraz zadziałał kod od DS-a. Wcześniejsze problemy być może wzięły się z tego że programy do obsługi USBasp oraz ArduinoIDE zainstalowały różne wersje avr-gcc i chyba zrobił się jakiś kocioł jak doszło Eclipse. Teraz jednak wszystko działa, a na przyszłość jest nauczka co by spokojniej podchodzić do ewentualnych problemów przy programowaniu.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2017, o 12:52 
Offline
Nowy

Dołączył(a): 10 lut 2017
Posty: 1
Pomógł: 0

W pliku "delay.h" masz:

Kod:
void
_delay_ms(double __ms)
{
...


Wiec należy podać liczbę zmiennoprzecinkową np.:

Kod:
_delay_ms(1000.0);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2017, o 17:39 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Przez 5 lat to już raczej znalazł rozwiązanie ;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2017, o 00:49 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Złota łopata się należy ;)

_________________
http://www.marcingibas.pl



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: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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