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



Teraz jest 21 maja 2026, o 10:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 5 gru 2015, o 22:53 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Witam, jako że jestem początkującym proszę o wytknięcie mi błędu w kodzie. Pewnie coś "pokręciłem". Wzorowałem się na BB oraz filmikach na YT od Pana Mirka. Mam lcd 16x2 i działający voltomierz. Napięcie wyświetla mi się w 1 linijce, w drugiej linii wyświetlacza chciałbym wyświetlać temperaturę. W BB jest kod opisany na Atmega32 i wykorzystane dwa czujniki na 1wire.
Ja potrzebuję tylko jeden i mam na atmega8, pozmieniałem "według siebie" i noty aplikacyjnej. Wgrywałem kod i kompilowałem (błędów nie ma). W każdym razie voltomierz mi działa, ale temperatura nie wyswietla się. Czujnik podłączony na 100% dobrze. Pin PB1 ustawiony również w onewire.h według BB. Z góry dzięki.

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: 5 gru 2015, o 23:29 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

No ładnie posklejałeś sobie dwa programy ;) .
"sei();" daj przed pętlę while.
Tą drugą pętlę while(1) skasuj, a zawartość wrzuć do pierwszej.
To na początek, żeby jakoś to ogarnąć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 00:35 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Co nieco uporządkowałem. Generuje błąd (undefinied reference to 'pomiar').

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: 6 gru 2015, o 03:06 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

Brakuje Ci deklaracji funkcji "pomiar(...)". Zastanów się, jak kompilator ma znaleźć funkcję do której się odwołujesz wcześniej ( w linii 84), niż ją zdefiniowałeś ( w linii 118) ?
Po prostu, przed funkcją main() ( na przykład w linii 37) umieść:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 13:06 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Pomyślałem od tym na samym początku, ale w 24 linii jest deklaracja funkcji pomiar.
QuadMan napisał(a):
Witam,

Brakuje Ci deklaracji funkcji "pomiar(...)". Zastanów się, jak kompilator ma znaleźć funkcję do której się odwołujesz wcześniej ( w linii 84), niż ją zdefiniowałeś ( w linii 118) ?
Po prostu, przed funkcją main() ( na przykład w linii 37) umieść:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 16:34 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam ponownie.

Mój błąd, nie zauważyłem wcześniej tej deklaracji i szczerze Ci powiem, że w takim razie nie mam pojęcia o co chodzi.

Pozdrawiam, QuadMan.

DOPISANE: U Ciebie funkcja pomiar(...) znajduje się wewnątrz pętli funkcji main() i to dlatego. Wcześniej tego nie zauważyłem. Aha, i usuń:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i to drugie sei() - z pętli while(1).
Po tych modyfikacjach Twój program kompiluje się bez błędów i ostrzeżeń, niestety nie mam możliwości sprawdzenia, czy działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 17:26 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Witam, dzięki za wskazówki. Też zauważyłem to godzinkę przed Tobą. Kompilacja bezbłędna, lecz póki co działa mi tylko voltomierz.
W 1 linijce LCD wyświetla mi napiecie, lecz druga jest pusta. Nie wiem czy problem polega na wyświetlaniu czy samym pomiarze temperatury. Na obecny stan:

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: 6 gru 2015, o 17:50 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam ponownie.
Spróbuj może wyświetlić cokolwiek w 2 linii wyświetlacza, być może masz wyświetlacz, który ma inny adres 2 linii w jego pamięci.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2015, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Druga linia jest pusta bo temperatura wyświetlana jest co ok. 3s a co 600ms ekran jest czyszczony. Po wyświetleniu temperatury program przechodzi na początek pętli while gdzie po wykonaniu pomiaru wyświetlacz zostaje wyczyszczony.
Trochę zmieniłem program i druga linia mi się wyświetla
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tak poza tym to niepotrzebnie w pętli while używasz polecenia sei(). Po co z każdym obiegiem włączać przerwanie skoro już wcześniej zostały włączone.

No i ten paskudny delay. Jeśli chcesz aby pomiar był wykonywany co 600ms to zamiast delaya wykorzystaj timer programowy tak jak to jest zrobione w przypadku pomiaru temperatury.
Ja dla testu pomiar napięcia wsadziłem w ten sam timer programowy co pomiar temperatury.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 11:23 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Serdeczne dzięki nie zauważyłem tego.. teraz działa, muszę sobie to utrwalić żeby takich błędów nie popełniać. Chciałem jeszcze zmienić sobie trzy słowa aby użyć w nich polskich znaków. Nie umiem sobie z tym poradzić. Wygenerowałem sobie wg generatora fontów Ę, Ś i Ł. Zapisałem w programie w postaci jak na BB lecz traktuje to jako błąd. Ktoś domyśla się o co może chodzić?

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


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






BŁĘDY:
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: 7 gru 2015, o 11:44 
Offline
Użytkownik

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

Poczytaj to na blogu Mirka. Powinno Ci pomóc
http://mirekk36.blogspot.com/2012/08/eclipse-kopot-z-pstr-przeczytaj.html

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 13:23 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Nic mi to nie mówi odnośnie mojego przypadku. Może jestem zbyt tępy.. Ale zauważyłem jedno.. :

Fragment z lcd44780.h :

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


Widzę, że tu już jest składnia ' void lcd_str_P(const char * str); ' opisana na blogu..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 14:52 
Offline
Użytkownik

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

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

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 15:22 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

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


podkreśla wszystkie defchar'y na czerwono.
I generuje błędy:

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: 7 gru 2015, o 15:32 
Offline
Użytkownik

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

A sprawdziłeś jakie masz deklaracje lcd_defchar?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 16:38 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Myślę, że jest ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 18:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

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

Ale wtedy powinieneś użyć lcd_defchar_P dla wszystkich trzech tablic. Jeśli chcesz używać poleceń lcd_defchar i lcd_defchar_E to nie możesz tych tablic umieszczać w pamięci Flash.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 18:47 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Zmieniłem na lcd_defchar_P lecz gdzie szukać problemu z tymi błędami w kompilacji? Są takie same jak były wcześniej..

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: 7 gru 2015, o 19:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

A gdzie kolega próbuje wywoływać funkcje lcd_defchar_P? Czy przed funkcją main?

Funkcje wywoływać można tylko wewnątrz innych funkcji. Przed funkcją main nie można wywoływać żadnych funkcji. A coś mi się zdaje, że kolega właśnie tak próbuje zrobić.
Żeby nie być gołosłownym. Zrobiłem tak w swoim projekcie i otrzymałem ten sam błąd.



Ostatnio edytowano 7 gru 2015, o 20:30 przez jacekk232, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2015, o 20:24 
Offline
Nowy

Dołączył(a): 05 gru 2015
Posty: 10
Pomógł: 0

Działa! Dzięki serdeczne i przepraszam za mój brak podstawowej wiedzy. Gdyby nie Wasza bezinteresowna pomoc to nie wiem jakby te forum funkcjonowało.. Chwała Wam za to, a ja zawodowy mechanik szybciej zaskoczę nawet tak podstawowe sprawy.



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 2 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