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



Teraz jest 28 mar 2024, o 18:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 29 wrz 2019, o 17:03 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Mam mały problem związany z poradnikiem avr - eeprom - struktury cz.2
Przepisywałem go z poradnika , biblioteki mam z GB wszystko niby ok
sprawdzane po kilka razy a pojawia mi się jeden błąd którego w poradniku
nie było

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

OPIS BŁĘDU

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


Jeśli wstawię słówko -> const to w komendach AT błędy się mnożą jak króliki ;)
Nie wiem czemu w moim kodzie mimo że jest przepisany kropka w kropkę z poradnika
Deklaracja extern TCFG pgm_cfg PROGMEM nie widzi stałej tak jak w poradniku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2019, o 17:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

miki53 napisał(a):
Nie wiem czemu w moim kodzie mimo że jest przepisany kropka w kropkę z poradnika
Deklaracja extern TCFG pgm_cfg PROGMEM nie widzi stałej tak jak w poradniku
Odpowiedź jest prosta - kod z poradnika był kompilowany na starym winavr, Ty zapewne próbujesz to kompilować w najnowszym atmel toolchainie który narzuca nowe zasady, i niestety jak dane we flash to musi być const.
Cytuj:
Jeśli wstawię słówko -> const to w komendach AT błędy się mnożą jak króliki ;)
Pokaż jak to robisz i jak wyglądają te "króliki"

------------------------ [ Dodano po: 13 minutach ]

Przypuszczam że const dodajesz do deklaracji/definicji samej zmiennej, ale już w funkcjach które używają tej zmiennej nie zmieniasz deklaracji zmiennych funkcji na const, stąd kompilatorowi się czkawka odbijają różnice w deklaracjach tych zmiennych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2019, o 20:15 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
variable 'pgm_cfg' must be const

to jest klucz w błędach które ci się pojawiają i słusznie pisze kolega wyżej ... na to zaś odpowiedź masz w dużo późniejszym poradniku z bloga

http://mirekk36.blogspot.com/2012/08/ec ... zytaj.html

_________________
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: 1 paź 2019, o 18:46 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Plik komendy at.c
W tym pliku pojawiło się najwięcej błędów
Próbowałem sobie z tym poradzić przy pomocy Mirka poradników ale bez rezultatu

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


Tu podaję wyświetlane 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: 2 paź 2019, o 05:59 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

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

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

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 paź 2019, o 14:16 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Wstawiłem ale to nie pomaga

------------------------ [ Dodano po: 49 minutach ]

Spróbowałem zastosować to (przedstawione niżej ) z poradnika mi nie działa

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: 3 paź 2019, o 05:51 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Może spróbuj jednak zacząć od pisania małych fragmentów programu. Odłóż cały obecny projekt. Stwórz sobie nowy testowy zadeklaruj typ strukturalny zdefiniuj zmienne i zacznij z nich korzystać. Wtedy będzie można łatwiej dojść do tego. Teraz wysłałeś posta na zasadzie coś nie działa. No to coś trzeba zrobić.
Tak sobie kiedyś ćwiczyłem
main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


Autor postu otrzymał pochwałę

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2019, o 14:58 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Co z tymi błędami zrobić jak z tego wyjść ?
opiszę najkrócej jak można aby było łatwiej przeanalizować

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



(Mimo że programowanie jest fajne to jednak taka walka z przeciwnościami jest zniechęcająca)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 paź 2019, o 19:13 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Myślę sobie że powinieneś na chwile ten projekt odłożyć na bok i zacząć od początku.
Tak jak Ci podałem przykład, czyli zdefiniowanie jakiegoś małego typu strukturalnego. Wygenerowanie najpierw zmiennej tego typu w pamięci RAM. Potem próba "obróbki" tej zmiennej. Dalej stworzenie przebrnięcie tego typu strukturalnego we flash dalej w eeprom.
Następnie korzystając z poradnika Mirka kopiować w te i we te te zmienne.
Z ramu do eeprom z flasz do ram i do eeprom
Na koniec jak już to opanujesz to umieść w definiowanej strukturze wskaźnik na funkcje.
void (*funkcja)(void);
Wywołaj tę funkcje.
Wejdź potem na wyższy poziom i w definicji struktury umieść wskaźnik do funkcji z argumentem w postaci jak niżej
void (*funkcja)(struct TWOJTYPSTRUKTURALNY * zmienna)
Za każdym razem kompiluj i patrz czy nie robisz babola.
Później pójdzie z górki.

Zobacz Tu masz błąd w 275 linii. Nie było wcześniej błędów?

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2019, o 12:23 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Szkoda że nie mogę z korzystać z tego poradnika z powodu nie tyle błędów programu co
z powodu niezgodności programu w którym został napisany a eclipse w którym chcę
go otworzyć

Miałem nadzieję że dzięki niemu nauczę się czegoś , chciałem spróbować go przerabiać
do swoich potrzeb ( jako sterownik ) ale nic z tego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2019, o 12:47 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Ja bym tak szybko nie rezygnował.

Nie ważne w czym piszesz ostateczną robotę robi kompilator i to on może czasem nie zgadzać się z tym co napisałeś
Ale tych różnic między starym WINAVR a nowym kompilatorem nie ma tak wiele.
Błędy które ci kompilator wytknął raczej wskazują że nie do końca dobrze podzieliłeś projekt na pliki.
Ale mogę się mylić.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2019, o 13:20 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Ten projekt był na żywca przepisany z poradnika Mirka i dzieliłem go na pliki tak jak
było w poradniku więc tu chyba nie ma pomyłki tak myślę.
Tu chodzi o różnice między tymi kompilatorami
wstawiałem const w funkcje i bez rezultatu
Nie wiem jak to przejść



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 paź 2019, o 13:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Widzisz, wklejasz tu fragmenty kodu, i w taki sposób niezwykle trudno pomóc nie widząc reszty. Czasem jest tak że gdzieś zamiast średnika jest przecinek, albo zamiata nawiasu klamrowego okrągły i wywala błędy, ale nie dotyczące nawiasu a zupełnie czego innego i w innym miejscu kodu, bo dla kompilatora to oznacza zupełnie co innego niż to czego oczekuje programista. I może (ale tylko może) być tak że błędy które tu wklejasz są powodowane przez coś co jest zupełnie w innym miejscu kodu.
Dla tego koledzy już wcześniej Ci sugerowali założenie projektu od nowa, i wrzucanie do niego małe segmenty kodu i sprawdzanie czy kompiluje się poprawnie po każdym takim wzbogaceniu nowego kodu. Wtedy szybciej idzie wyłapać źródło problemu. A i też można się przy tym dużo nauczyć, bo trzeba te segment wydzielać "z głową", a przecież piszesz że chcesz się uczyć... Więc może spróbuj tą drogą.

np ten błąd:
miki53 napisał(a):
// komendy_at.c:37:15: error: 'at_al1_service' undeclared here (not in a function)
moze oznaczać to że zmian dokonałeś w pliku c, ale już zapomniałeś o poprawie deklaracji w pliku h.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 paź 2019, o 11:01 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Czy tę strukturę mam napisane dobrze?

Jeśli coś jest nie tak, czy czegoś brakuje to proszę poprawcie
na przykładach bo od tego szukania odpowiedzi w poradnikach i literaturze
kręci się w głowie :|


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 paź 2019, o 11:31 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

No widzę tu jeden problem
Definiujesz typ strukturalny TALARM w main.c
No i zmenne alarm_1 i alarm_2 też w main.c
Raczej bym zdefiniował to poza funkcją main.c

Dodatkowo jak już tak działasz to zrób sobie tablicę alarmów
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wtedy odwołanie staje do kolejnych alarmów staje się banalne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Gdy dołożysz sobie następny alarm to dodajesz tylko kolejny indeks
To tak na szybko na zasadzie wędki
W poradniku o snake część druga Mirek to opisuje bardziej szczegółowo.

O tu masz link do tego o czym piszę
https://youtu.be/MOgXcDJ29B0?t=149

------------------------ [ Dodano po: 41 minutach ]

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


------------------------ [ Dodano po: 53 minutyach ]

A wtedy wyświetlanie alarmu sprowadzasz do jednej prostej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Oczywiście mogłem zrobić jakąś literówkę ale chodzi o idee tego co można zrobić z tablicą struktur


Autor postu otrzymał pochwałę

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 paź 2019, o 13:15 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

No trochę "nababoliłem" w ostatniej części wpisu.
No cóż cały czas się uczę i czasem takie potworki mi się zdarzają
Niestety nie mogę tego wyedytować i poprawić
Coś się porobiło że raz mogę edytować raz nie.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 paź 2019, o 18:40 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Mam parę pytań

1 - dlaczego użyłeś zmiennej uint8_t active;
jakie ma zadanie ?

2 - co znaczy słowo costam i jego zadanie

3 - dlaczego tak chcesz wyświetlić zawartość tablicy lcd_int( costam.godz );
skoro wskazujesz tylko na jeden jej element



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 paź 2019, o 19:37 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

miki53 napisał(a):
Mam parę pytań

1 - dlaczego użyłeś zmiennej uint8_t active;
jakie ma zadanie ?

2 - co znaczy słowo costam i jego zadanie

3 - dlaczego tak chcesz wyświetlić zawartość tablicy lcd_int( costam.godz );
skoro wskazujesz tylko na jeden jej element

Ad1.
Użyłem tej zmiennej jako flaga prawda/fałsz. Później w pętli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czyli jeśli zmienna będzie różna od zera wykonaj akcję
Ad2.
Ad3.
Tu trochę popłynąłem.
Chciałem pokazać jak z wielu osobnych funkcji zrobić jedną uniwersalną do wyświetlenia wszystkich alarmów.
Spróbuje to jeszcze raz napisać.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie mam na czym sprawdzić ale tak jak pisałem chodziło o idee.
Do funkcji można by również przekazać wskaźnik do struktury
ale wtedy dobieranie się do poszczególnych zmiennych robi się inaczej.
To jest w linku który ci podesłałem

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2019, o 16:40 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

Mam fragment z poradnika pt. snake którego nie rozumiem.

Jest w nim mowa o strukturze do której możne wpisywać
dane za pomocą dwóch funkcji i odczytywać zawartość
jej za pomocą jednej funkcji

Jak wyświetlać na LCD zawartość tej struktury dla dwóch
ustawień

Na początku poradnika szło fajnie ale po zmianie tematu
i natłoku informacji trudno było wyłuskać dalszą część działania struktury

Prosiłbym o pomoc w rozwikłaniu problemu wyświetlania zawartości tej struktury
na LCD Na przykładzie pobranym z poradnika

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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 11 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO