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



Teraz jest 23 sty 2026, o 03:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
 Tytuł: pin portu
PostNapisane: 6 sty 2014, o 20:03 
Offline
Nowy

Dołączył(a): 27 gru 2012
Posty: 10
Pomógł: 0

Jak się dobrać do nazwy portu w/g nazwy pinu ?
Jeżeli w funkcji używam PD1 to jak mogę się dobrać do PORTD ?
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  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 20:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Nie bardzo rozumiem pytanie
Chcesz odczytać wartość pinu procesora ?

O obsłudze pinów uC masz tutaj bardzo przydatny artykół
http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 20:34 
Offline
Nowy

Dołączył(a): 27 gru 2012
Posty: 10
Pomógł: 0

Nie.
Denerwuje mnie dostęp do portów, dlatego chce zrobić funkcje / makro.
PinDir ( nazwa pinu, funkcja )
gdzie
nazwa pinu to np PD1
funkcja we / wy / we pullup



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 20:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

tez tak myslalem na poczatku , ale lepiej jest przemeczyć i utrwalic sobie dokladnie obsługe portów bez makr i innych
takich skrótów . dopiero pozniej jak już opanujesz to mozna sie bawic w takie ułatwienia. Bo z czasem
bedziesz uzyawał tych swoich makr , a niech sie zdarzy że np utracisz wszystkie dane , reinstal systemu i co wtedy ? makra odlecą a ty z reką w nocniku
nie bedziesz potrafił ustawic mikrokontrolera do migania diodą .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 21:26 
Offline
Nowy

Dołączył(a): 27 gru 2012
Posty: 10
Pomógł: 0

Nie jestem zawodowym programista. Trochę bazgrałem w TP, delphi, bascom, ASM Z80. C ma ta zalete, ze jest bardzo zwarty, ale stare przyzwyczajenia i skladnia C mnie dobija.
wole $FF / FFh niz 0xFF
Chce napisac kilka mark / funkcji podobnych jak w arduino



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 21:47 
Offline
Moderator
Avatar użytkownika

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

aceton napisał(a):
Nie jestem zawodowym programista


ZDECYDOWANA większość programistów amatorów po przeczytaniu Bluebooka woli nauczyć się używać DOBREGO STYLU programowania w C bo to popłaca ... i każdy chyba to potwierdzi

dlatego polecam ... bo wystarczy troszkę się z tym zaznajomić i okaże się szybko że to bardzo łatwe, proste, przyjemne i UŁATWIA życie i programowanie - .,.....

_________________
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  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 22:31 
Offline
Nowy

Dołączył(a): 27 gru 2012
Posty: 10
Pomógł: 0

Nikt nie wie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 6 sty 2014, o 22:42 
Offline
Nowy

Dołączył(a): 14 sie 2012
Posty: 11
Pomógł: 2

Ja wiem, ja wiem! Też chwilę nad tym spędziłem, ale rozpisanie tego na 3/4 ify strasznie mnie irytowało...

Tzn, ani nie jest to funkcja, ani makro (którego i tak prawdopodobnie byś użyć nie mógł, bo w końcu zmienną do niego podajesz) - jest to tablica z wskaźnikami na adresy portów (o ile dobrze to rozumiem).

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

Co prawda nie jestem pewien czy taki typ tablicy jest najodpowiedniejszy*... Ale taki działa. (;

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



Na końcu - ja z tego korzystam na M16 - czyli równo 4 kolejne porty, każdy z 8 pinami - przy czymś mniejszym/większym możliwe, że będziesz musiał trochę warunków pododawać, by nie ustawiać czegoś co nie istnieje.



E: * - znalazłem źródło utwierdzające mnie w przekonaniu, że typ jest dobry: http://www.nongnu.org/avr-libc/user-man ... _port_pass - przykład co prawda trochę inny, ale imho łatwiej przekazać jedynie indeks tablicy niż cały adres...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 7 sty 2014, o 10:47 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Ja tylko dodam, że PD1, PB2, PC4 ... etc to są stałe symboliczne ( chyba tak to się zwie ) zdefiniowane dyrektywą #define i PD1 == PB1 == 1, PC4 == PD4 == 4 etc. tak więc wyłuskiwanie nazwy portu ( która też jest stałą symboliczną reprezentującą adres i ustawioną dyrektywą #define ) na podstawie nazwy pinu chyba skazane jest na niepowodzenie. Chyba że jest jakiś sposób na rozkrojenie PBx na poszczególne elementy tj osobno P,B,x a potem złożenie tego inaczej podobnie jak to ma Mirek w swoich makrach upraszczających dostęp do portów.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 8 sty 2014, o 10:53 
Offline
Nowy

Dołączył(a): 27 gru 2012
Posty: 10
Pomógł: 0

Nie kapuje jak to ma działać :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 8 sty 2014, o 11:30 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Kol.Villentre zaproponował stablicowanie adresów portów i stworzenie własnego sposobu dostępu. Podobne rozwiązanie podpowiedzieli ci na elce w twoim temacie zaczerpnięte z Arduino. Nie sądzę jednak (jeżeli dobrze czytam twoją intencję), żeby istniała taka funkcjonalność :
adres_portu = jakas_funkcja( numer_pinu );
ponieważ
adres_portu = jakas_funkcja( PB1 ); po obróbce przez preprocesor otrzymasz adres_portu = jakas_funkcja( 1 );
adres_portu = jakas_funkcja( PD1 ); po obróbce przez preprocesor otrzymasz adres_portu = jakas_funkcja( 1 );
w obu przypadkach jakas_funkcja zwraca jeden i ten sam adres portu ponieważ jest identyczny argument wynoszący 1 a to dlatego, że PB1 jest równe 1 i PD1 również jest równe 1. PB1, PD1 etc są to stałe potrzebne wyłącznie do maskowania konkretnych bitów w bajcie będącym adresem portu. Z punktu widzenia otrzymanego wyniku zapisy PORTB |= ( 1 << PB1 ) i PORTB = ( 1 << PD1 ) są identyczne;

PORTB |= ( 1 << PB1 ); i PORTD |= ( 1 << PB1 ); oczywiście są istotnie różne;
Konkluzja :
Tego czego oczekujesz raczej się nie da.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: pin portu
PostNapisane: 8 sty 2014, o 19:06 
Offline
Nowy

Dołączył(a): 14 sie 2012
Posty: 11
Pomógł: 2

aceton napisał(a):
Nie.
Denerwuje mnie dostęp do portów, dlatego chce zrobić funkcje / makro.
PinDir ( nazwa pinu, funkcja )
gdzie
nazwa pinu to np PD1
funkcja we / wy / we pullup


Krótko mówiąc - jak perlon wspomniał - piny nie mają nazw. Mają jedynie numer i są przyporządkowane do jakiegoś portu..

Taka funkcja/makro więc raczej nie 2 a 3 parametry powinna przyjmować: (port, pin, funkcja). Dzięki stablicowaniu adresów uzyskanie czegoś takiego nie będzie trudne.

Jeśli to ma być funkcja, to jednak można parametr podać jako string... set_pin("PA0", ...), w takim wypadku wyciągnięcie informacji do jakiego portu należy dany pin jest możliwe (ba, nawet nie jest trudne). Ale ma to tylko sens, jeśli ten parametr przychodzi np. od użytkownika przez UART, a nie "żeby programiście uprościć" - bo wtedy zmusza uC do wprost głupiej (całkowicie niepotrzebnej) pracy.

Dla makra raczej bardzo Cię nie zaboli pisanie zamiast "PB1" "B, 1", a pozwoli na zrealizowanie tego co chcesz (bo preprocesor chyba na łańcuchach znaków nie operuje)...



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 5 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