ATNEL tech-forum
https://forum.atnel.pl/

Pytanie do poradnika AVR-EEPROM-Struktury cz.2
https://forum.atnel.pl/topic22588.html
Strona 1 z 1

Autor:  miki53 [ 29 wrz 2019, o 17:03 ]
Tytuł:  Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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

Autor:  xentis [ 29 wrz 2019, o 17:16 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  mirekk36 [ 29 wrz 2019, o 20:15 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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

Autor:  miki53 [ 1 paź 2019, o 18:46 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  JarekB [ 2 paź 2019, o 05:59 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  miki53 [ 2 paź 2019, o 14:16 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  JarekB [ 3 paź 2019, o 05:51 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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:  miki53 [ 3 paź 2019, o 14:58 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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)

Autor:  JarekB [ 3 paź 2019, o 19:13 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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?

Autor:  miki53 [ 4 paź 2019, o 12:23 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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

Autor:  JarekB [ 4 paź 2019, o 12:47 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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ć.

Autor:  miki53 [ 4 paź 2019, o 13:20 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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ść

Autor:  xentis [ 5 paź 2019, o 13:22 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  miki53 [ 7 paź 2019, o 11:01 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  JarekB [ 7 paź 2019, o 11:31 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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:  JarekB [ 7 paź 2019, o 13:15 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Autor:  miki53 [ 7 paź 2019, o 18:40 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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

Autor:  JarekB [ 7 paź 2019, o 19:37 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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

Autor:  miki53 [ 9 paź 2019, o 16:40 ]
Tytuł:  Re: Pytanie do poradnika AVR-EEPROM-Struktury cz.2

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.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/