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



Teraz jest 29 mar 2024, o 08:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 18 paź 2018, o 18:08 
Offline
Użytkownik

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

Witajcie
Chciałem sobie ułatwić życie i poległem.
Wymyśliłem że stworzę pętlę w której będę ustawiał określony stan na określonym pinie procka.
Wykreowałem tablicę dwu wymiarową
i w tablicy wstawiłem przyjazne dla mnie nazwy LINIA1_PORT, LINIA2_PORT, LINIA3_PORT oraz LINIA1_PIN, LINIA2_PIN LINIA2_PIN. Niestety kompilator czepia się nazw LINIAx_PORT.
Krzyczy main.c:17:1: error: initializer element is not constant
Rozumiem już co to oznacza ale nie mam pojęcia jak to obejść.
Tak mi ta pętla pasuje i w zasadzie mógłbym to obejść stosując switch-a ale wolałbym zdeklarować w tablicy i odwoływać się tak jak w kodzie.
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.



Ostatnio edytowano 18 paź 2018, o 18:30 przez JarekB, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2018, o 18:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

DDRA nie jest liczbą uint8_t (jak zmieniłem na liczbę, to mi się skompilowało).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2018, o 18:28 
Offline
Użytkownik

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

Marhef napisał(a):
DDRA nie jest liczbą uint8_t (jak zmieniłem na liczbę, to mi się skompilowało).

Napisz w którym miejscu zrobiłeś tę zmianę ?

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 paź 2018, o 19:06 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Marhef napisał(a):
DDRA nie jest liczbą uint8_t

DDRA jest liczbą uint8_t, tylko że reprezentuje zawartość rejestru, która nie jest wartością stałą znaną podczas kompilacji (stąd błąd).
Wartością stałą jest za to wskaźnik do tego rejestru i to poprzez wskaźnik należy się do rejestru odwoływać.
Niestety tablica dwuwymiarowa tu się nie sprawdzi, bo LINIAx_PORT to musi być adres rejestru (typ volatile uint8_t*), za to LINIAx_PIN to stała wartość całkowita (typ uint8_t), a jak wiadomo tablica może zawierać tylko elementy tego samego typu.
Trzeba więc stworzyć dwie tablice (co będzie mało wygodne), lub stworzyć strukturę ze wskaźnikiem i stałą całkowitą, a później tablicę struktur:
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: 18 paź 2018, o 19:43 
Offline
Użytkownik

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

Dzięki
Tego mi brakowało.
To pokazuje też ile jeszcze wiedzy mi brakuje.
Ale najważniejsze że rozumiem ten kod, co kilka miesięcy temu było by niemożliwe.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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