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



Teraz jest 30 lis 2024, o 08:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 16 cze 2015, o 18:11 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 lis 2014
Posty: 14
Pomógł: 0

Witam. Walczę z 1wire samemu i załóżmy, że mam 1wire na 4 Pinach procesora. Tak sobie wymyśliłem i nazywają się kolejno DI[0..3] i teraz moje pytanie jest następujące. czy dla każdego z PINów muszę powielać nazwe funkcji?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Chciałbym np w deklaracji funkcji móc wpisać np numer DDR, PORTu i PINU procka które są przechowywane w makrach w takiej postaci

Kod:
#define DI3_PORT PORTA
#define DI3_DDR DDRA
#define DI3_PIN PINA
#define DI3_PINn PA3


Mam nadzieję, że jasno się wyraziłem:) Z góry mówię, że nie posiadam żadnego z Booków może uczę się naokoło ale staram się:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2015, o 18:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

niestety ale jak chcesz sobie tak utrudniać to musisz uruchomić 1Wire dla każdego z pinów ...
niby łatwiej potem (mawiają co niektórzy) zapanować nad tym gdzie jest jaki czujnik , ale taka praktyka
niepotrzebnie marnuje piny i zabija magistralę 1Wire ... bo cały sęk w tym i tak to stworzono
by wiele czujników wisiało na 1 pinie .....

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2015, o 18:42 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 lis 2014
Posty: 14
Pomógł: 0

SunRiver wiem o tym, tylko chodzi o to, że mam na przykład 4 maszyny dla każdej np po 4 czujniki temp. kazdą maszynę chce na osobnym pinie.
Dlatego stworzyłem sobie makra Di3_PORT DI2_PORT id. i teraz nie chce pisać sobie pliku *.c gdzie mam funkcje DI3_reset(); DI2_reset();
Wolałbym sobie DI_reset((xyz) port) nie wiem co wstawić zamiast (xyz) aby przekazywać dane z makra do funkcji.

I czysto teoretycznie robie to dla nauki;)

EDIT: A dodatkowo samo powielenie funkcji dodaje 0.2% FLASH dla ATMEGI32.

EDIT2: Dobra zrobiłem to w zupełnie inny sposób. Po prostu dodałem instrukcje warunkową #if defined(DI0_ENABLE) #endif i tak dla każdego. z wejść. Zamysł ten sam tylko, że niestety trzeba powtarzać nazwy funkcji w pliku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2015, o 19:46 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

To co jest zmienne przenieś do parametrów funkcji, np. jakoś tak:

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

Wywołanie:

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: 16 cze 2015, o 20:02 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 lis 2014
Posty: 14
Pomógł: 0

Na pewno przetestuje sam jestem ciekaw jak to wyjdzie z zajętością pamięci.



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