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



Teraz jest 27 kwi 2024, o 23:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 20 sie 2012, o 16:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Witam. Mam gotowy skrypt pomiaru temperatury.
Do portu D pin 7 jest podłączony czujnik DS18B20 w taki sposób :
/* DS18B20 przyłączony do portu PD7 AVRa */
#define SET_ONEWIRE_PORT PORTD |= _BV(7)
#define CLR_ONEWIRE_PORT PORTD &= ~_BV(7)
#define IS_SET_ONEWIRE_PIN PIND & _BV(7)
#define SET_OUT_ONEWIRE_DDR DDRD |= _BV(7)
#define SET_IN_ONEWIRE_DDR DDRD &= ~_BV(7)

Nie bardzo rozumiem ten sposób konfiguracji. Jestem początkującym.
Chciałbym wykorzystać port D pin 6 do wejścia z podciągniętym napięciem VCC
tylko jak to zrobię tak:
DDRD = 0x00;
PORTD = 0x02;
to chyba poprzednia definicja nie będzie działać albo coś się będzie kłócić.
próbowałem coś wykombinować w ten sposób co wyżej ale nie bardzo wiem jak :(
ktoś doradzi ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 16:57 
Offline
Moderator
Avatar użytkownika

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

W pierwszej książce masz bardzo fajne procedury obsługi do DS18x20 - możesz sobie tam zajrzeć ? i sprawdzić co i jak ? porównać ?

_________________
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: 20 sie 2012, o 17:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Niestety nie mam jeszcze tej książki :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 17:34 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

#define CLR_ONEWIRE_PORT PORTD &= ~_BV(7)
znaczy, że zamiast PORTD &= ~_BV(7) które nic nie mówi używasz sobie w programie CLR_ONEWIRE_PORT - ta nazwa już pokazuje mi, że wyzeruje sobie linie portu 1-Wire.
_BV(x) to znaczy to samo co (1<<x) czyli wykonanie operacji przesunięcia bitowego w lewo. Bardziej obrazowo gdy np. x=3 operacja ta wygląda następująco 00000001 << 3 = 00001000. Widać przesuniecie 1.
a |= b; to to samo co a = a | b; i jest to suma logiczna bitowa (OR), sumowane są odpowiadające sobie bity np. 0011 | 0101 = 0111
a &= b; to to samo co a = a & b; i jest to iloczyn logiczny (AND), operacja wykonywana jest na odpowiadających sobie bitach np. 0011 & 0101 = 0001
~ to negacja bitowa (NOT) zamienia bity na przeciwne np. ~0101 = 1010

PORTD = 0x02; to inaczej PORTD = 0b00000010; i ustawiając bit nr1 wyzerujesz pozostałe jeśli chcesz tego uniknąć to do ustawiania bitów używasz |=, a do zerowania &=

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 19:20 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 166
Pomógł: 0

Co nabiorę chęci do nauki C i robię kolejny zryw, trafiam na taki tekst i natychmiast wymiękam. NO KUŹWA, MUSI BYĆ JAKIŚ SPOSÓB ABY TO PRZEJŚĆ.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 19:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2011
Posty: 582
Lokalizacja: okolice Wrocławia :)
Pomógł: 24

zenowi napisał(a):
Co nabiorę chęci do nauki C i robię kolejny zryw, trafiam na taki tekst i natychmiast wymiękam. NO KUŹWA, MUSI BYĆ JAKIŚ SPOSÓB ABY TO PRZEJŚĆ.


Nie nie pękaj kolego Zenowi... ja mam dokładnie tak samo.. jak znajdziesz jakiś działający sposób aby przez to przebrnąć koniecznie się tym pochwal :) .
Ja tam nie mogę się przestawić z asemblera...... sorry za OT :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 20:14 
Offline
Moderator
Avatar użytkownika

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

zenowi napisał(a):
Co nabiorę chęci do nauki C i robię kolejny zryw, trafiam na taki tekst i natychmiast wymiękam. NO KUŹWA, MUSI BYĆ JAKIŚ SPOSÓB ABY TO PRZEJŚĆ.


Ale jaki tekst ??? przecież kolega Krauser w taki skondensowany wprawdzie sposób ale przekazał istotę tych zapisów ;)

No pewnie że jest sposób, tylko że kolega to tak trochę jak w tym kawale.

Cytuj:
Był wielki sztorm, przeżył tylko jeden człowiek,i jakimś cudem dostał się na wysepkę. Po paru tygodniach podpływa do niego motorówka.
- To twój szczęśliwy dzień, wskakuj na pokład - zapraszają ludzie z motorówki.
- Nie, wierzę, że Bóg mnie uratuje.
- Jak chcesz - powiedzieli i odpłynęli.
Po tygodniu przepływa inna motorówka z tym samym zaproszeniem, rozbitek znów odmawia. To samo powtarza się tydzień później.
Wreszcie smutny rozbitek umiera z głodu i trafia do nieba, po czym pyta się z pretensją Pana Boga:
- Dlaczego mnie nie uratowałeś?
- Jak to nie?! Trzy razy ludzi po Ciebie wysyłałem.


Podobnie tu, ma kolega książkę, jest forum więc można dopytać o wszystko, ja też zawsze czy na PRIV ale także chętnie OnLine na Skype pomagam ;) ..... a kolega NIE i NIE ;) ....

Więc jak się można nauczyć gdy się czeka na nie wiadomo co i wciąż narzeka, że C nie jest dla mnie ;)

Zatem panowie: zenowi i Sonix ;) ... bo widzę, że jest was dwóch .... napiszcie może czego nie rozumiecie, z czym macie problem - ale tak po kolei - przykład po przykładzie. Ja na prawdę postaram się pomóc - zresztą jak widać nie tylko ja ;)

Aha i nie traktujcie tego jakbym z was ironizował bo znam to z autopsji - zawsze powtarzam każdemu że sam aż 7 razy podchodziłem w ten sam sposób do C i mnie te ptaszki odrzucały ..... ale dlatego sporo postarałem się opisać w książce - więc mamy teraz jakiś punkt odniesienia.

Jeśli więc np podacie stronę i opiszecie czego nie możecie zrozumieć - bo to nieraz hamuje na maxa w zrozumieniu dalszych rzeczy - to przewałkujemy to może tu jeszcze raz ?

co wy na to Panowie ? ;)

------------------------ [ Dodano po: 4 minutach ]

Tyle że ja w książce jeśli chodzi o zapis wybrałem TYLKO przesunięcia bitowe - bo jak się czyta te różne zapisy, które mają włączyć stan wysoki na pewnych pinach np PORTA:

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


to chyba każdy powie że najlepiej trafia do podświadomości ten ostatni zapis a nie jakieś tam dziwolągi wcześniejsze ;)

_________________
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: 20 sie 2012, o 20:50 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 166
Pomógł: 0

Wydaje się, że tu nie ma czego rozumieć lub nie rozumieć. To się da powoli rozebrać. Ale od tego ciągłego powolnego rozbierania gdzie pałeczka gdzie zawijasek lub pokrzyknik ze ściągawką w ręku może w końcu człowieka szlag trafić. No musi być jakiś cwancyk aby tego szybko i sprawnie używać. Wydaje mi się, że istnieje coś na podobieństwo tabliczki mnożenia z którą się przecież nie dyskutuje ani rozbiera rozumowo tylko wykuwa na blachę i koniec. Taki zestaw regułek czy szczegółowych prawideł, które się zakuwa. Chodzi o to, aby ktoś z doświadczeniem zebrał to w sensowną kupę. Nie daj Boże aby były to tzw. ogólne zagadnienia opisowe. Może być metoda pamięciowa, wzrokowa czy dowolna inna, na krzyż czy ze spuszczaniem oczka (poddałbym się nawet seansowi hipnotycznemu) byleby przez to przejść.
Kiedyś w liceum aby nauczyć się nieregularnych odmian i czasów z niemieckiego zrobiłem sobie, za namową profesora, specjalny różaniec ze słówkami. Wystarczyło przed lekcją odmówić i człowiek był spokojny. Aż przyszedł dzień gdy zacząłem obywać się bez tego germańskiego oprzyrządowania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2012, o 20:55 
Offline
Moderator
Avatar użytkownika

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

zenowi napisał(a):
Kiedyś w liceum aby nauczyć się nieregularnych odmian i czasów z niemieckiego zrobiłem sobie, za namową profesora, specjalny różaniec ze słówkami. Wystarczyło przed lekcją odmówić i człowiek był spokojny. Aż przyszedł dzień gdy zacząłem obywać się bez tego germańskiego oprzyrządowania.


hahahaha no dobre dobre ;)

ale aprop'os takiego różańca do C .... co byś wolał na pierwszy koralik ? ;) czy mam rozumieć, że kłopot masz z operatorami ? jeśli tak to jakimi ? .... rzuć okiem do książki i powiedz od którego miejsca robi się ciemno - to będziemy próbowali rozjaśniać.

_________________
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: 20 sie 2012, o 23:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 450
Pomógł: 4

zenowi napisał(a):
Co nabiorę chęci do nauki C i robię kolejny zryw, trafiam na taki tekst i natychmiast wymiękam. NO KUŹWA, MUSI BYĆ JAKIŚ SPOSÓB ABY TO PRZEJŚĆ.


Jeszcze jeden cytat:

zenowi napisał(a):
Wydaje się, że tu nie ma czego rozumieć lub nie rozumieć. To się da powoli rozebrać. Ale od tego ciągłego powolnego rozbierania gdzie pałeczka gdzie zawijasek lub pokrzyknik ze ściągawką w ręku może w końcu człowieka szlag trafić. No musi być jakiś cwancyk aby tego szybko i sprawnie używać. Wydaje mi się, że istnieje (...)


Owszem, kolego istnieją sposoby, żeby te pałeczki i zawijaski opanować. Jednym z prostszych, moim subiektywnym zdaniem jest przeczytać od początku do końca całą książkę Nr 1 Mirka.
Drugim sposobem jest wykorzystanie ściągawek (niektórzy, "młodsi" koledzy powiedzą bryków) do tego, żeby mieć pod ręką wszystkie te "pałeczki, zawijaski i cwancyki".


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 07:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Ja powiem tak:
1.) Musisz się nauczyć operatorów bitowych i bajtowych takich jak(&, | ! ^,~,&&,||,<<,>> itd.) - to jest paciorek
2.) Zrozumieć kiedy występują , kiedy je stosować i operacji na nich ( wtedy zrozumiesz zapisy |= , &=~) - to jest litania
3.) Jeżeli chcesz spać spokojnie i w razie czego sobie przypomnieć co i jak niestety ("STETY") musisz się zaopatrzyć w książkę Mirka - to jest Biblia ( tam masz modlitwy paciorki i litanie )



Ostatnio edytowano 21 sie 2012, o 10:33 przez kidcowboy, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 08:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 cze 2012
Posty: 102
Pomógł: 2

Ustawienie bitu (czyli stan "1") na pozycji 4 w takim bajcie 00000100

"1" na czwartej pozycji wygląda tak 00001000 - to jest maska do operacji bitowych.

Aby ustawić bit na czwartej pozycji musisz wykonać sumę bitową obu bajtów (sumowanie podobne jak w arytmetyce: 0+0=0; 0+1=1; 1+1=1)

00000100
00001000 OR
------------------------------------
00001100


Aby teraz wygasić bajt na pozycji 4 musisz wykonać iloczyn (AND) bajtu z ZANEGOWANĄ maską (czyli 11110111)
Iloczyn bitowy jest analogiczny do iloczynu arytmetycznego (0*0=0; 1*0=0; 1*1=1)

czyli:
00001100
11110111 AND
------------------------------------
00000100


Jak wiesz ten bajt, na którym wykonujemy operacje to może być rejestr kontrolujący port mikrokontrolera.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 12:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Widzę że temat się rozkręcił :)
ale już sobie poradziłem, metodą prób i błędów :)
tak mi to wyszło:
Kod:
DDRD |= _BV(PD6); //ustawiamy port PD0 jako wyjście
PORTD &= ~_BV(PD6); //i ustawiamy to wyjście w stan wysoki (dioda nie świeci się)
DDRC &= ~_BV(PD5); //PC0 jako wejście
PORTC |= _BV(PD5); //które podciągamy do plusa

// Włączenie podświetlanie wyświetlacza:     
   if(!(PIND & 0x20))     //jeśli wejście jest w stanie niskim
   {
   PORTD |= _BV(PD6);      //to włącza podswietlenia
   _delay_ms(6000);      //świeci 6s
   PORTD &= ~_BV(PD6);   //wyłącza podświelenie.


Teraz kombinuje jak zrobić warunek że jeżeli raz naduszę przycisk to wykona się te podświetlenie a jak 2 razy to podświetlenie i inne funkcje. Kombinuje coś z pętlą for ale coś mi nie wychodzi :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 14:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Niestety Mirka nie :(
mam symfonia c++ standard dwa tomy i jezyk c dla mikrokontekstów avr od podstaw do zaawansowanych aplikacji.
trochę w necie szperam itp.
a tu zastosuje składnie _BV(PDx) ponieważ już większość kodu w nim jest.
O drganiach tez wiem ale nie brałem ich jeszcze pod uwagę
a ta trzecia sprawa to zamiast delay można wstawić pętlę bodajże for o ona by robiła za czekanie 6s i za wywołanie kolejnej funkcji ale gdzieś tam wyczytałem ze takie zastąpienie funkcji delay jest złym rozwiązaniem :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 14:36 

Pomógł: 0

Niestety "Język C dla m...... od podstaw do ...." jest dla bardziej zaawansowanych już, sporo tam skrótów myślowych ;).
Sam uczę się C z dwóch książek, "Język C, szkoła programowania" S. Pratha i "Język C nowoczesne programowanie".
Książki Mirka mam obydwie, z pierwszej można fajnie się "wprowadzić" w stan C, ale jednak samego C lepiej uczy mi się w oderwaniu od mikrokontrolerów. Na zasadzie wykładów i ćwiczeń jak u Praty :). Uczelniany tryb, pozwala troszkę łatwiej systematyzować wiedzę, bo zaczynamy od "hello world" przechodząc przez poszczególne etapy i dzięki temu nie rozpraszają nas po drodze jakieś niepoznane dotąd polecenia itp.
Mnie osobiście się tak lepiej uczy ;). Książki Mirka traktuje jako kolejny etap po ogarnięciu podstaw z C.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 16:44 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 166
Pomógł: 0

Czy ktoś z Was próbował tego? http://videokurs.pl/kurs-c.php Jak dotąd na nic lepszego nie trafiłem. p.Włodarczyk robi to w taki sposób, że nie da się nie rozumieć. Ponadto forma pogawędek jest bardzo przyjemna. Nie wiesz kiedy wchodzisz w temat i jesteś zaprzedany w najbardziej pozytywnym tego słowa znaczeniu. Cały kurs kosztuje 39zł. Przecież dziś to nie pieniądze. Tu naprawdę C++ stoi otworem i naprawdę wszystko jest od zera.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 07:38 

Pomógł: 0

Szkoda, że nie ma do C ;), chwilowo nie chce sobie mieszać w głowie ;).



Góra
  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO