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



Teraz jest 12 mar 2025, o 21:14


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 19 sie 2014, o 18:59 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Witam
Zebrałem się w końcu aby zaznajomić się z wyświetlaczem hd44780
no i zaczęły mnożyć się pytania.

1 moje pytanie związane jest z funkcja do przesyłania połowy bajtu, a dokładnie
dotyczy wyrażenia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zmienna "data" to jest jakiś bajt

wyrażenie to ma sprawdzić jaka jest wartość najmłodszego bitu i w zależności od wartości tego najmłodszego bitu wysłać odpowiedni stan na pin D4 wyświetlacza.
Problem polega na tym że chyba nie dokońca rozumiem jak to wyrażenie działa,
no bo jak mamy If (data& (1<<0)) to mamy iloczyn jakiegoś bajtu z 00000001 wynikiem tego działania jest zamaskowanie wszystkich bitów oprócz tego najmłodszego
no i gdzie w tym wyrażeniu całym jest jakaś zależnośc że jak młody bit będzie miał "0" to wystawiamy stan niski na D4 a jak będzie miał "1" to stan wysoki.
Jeszcze jest opcja że to "&" to jest operator pobierania adresu, wtedy to by miało jeszcze jakoś sens bo funkcja sprawdzałaby czy najmłodszy bit przyjmuje 0 lub 1 tylko też nie za bardzo wiem jak to się odbywa.

Pozdrawiam: Mac



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

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

if (data & (1<<0))

Jeśli najmłodszy bit bajtu "data" = 1 to cały warunek if jest true/jest spełniony.

& - jest to operator - iloczyn bitowy and.

"&" | 0 1
-----+-----
0 | 1 0
1 | 0 1


Autor postu otrzymał pochwałę


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

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Przyjmijmy, że zmienna data wygląda tak 0b10101011. Więc wyrażenie "data & (1<<0)" przyjmie taka postać 0b10101011 & 0b00000001. Rezultatem tego będzie 0b00000001. Jest to wartość różna od zera czyli prawda (true). W takim razie warunek if będzie spełniony i wykona się to co jest bezpośrednio po nim.

Jeśli zmienna data miała by najmłodszy bit wyzerowany (0b10101010) to warunek if nie był by spełniony bo 0b10101010 & 0b00000001 = 0b00000000 = fałsz (false). Dlatego w tym przypadku wykona sie to co jest po else.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2014, o 16:36 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Dziekuje za pomoc - wyleciało mi to z głowy ;-)

pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2014, o 13:07 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Witam

Kolejne sprawa która mnie zastanawia to - na str.226 bluebooka jest rozpisana funkcja inicjalizacyjna wyświetlacza i na samym końcu tej funkcji są komendy do włączania kursora np: lcd_write_cmd (LCDC_ONOFF | LCDC_CURSOROFF);
(LCDC_ONOFF | lCDC_DISPLAYON);
(LCDC_ENTRY | LCDC_ENTRYR);
jednak nigdzie nie ma zdefiniowane co tak naprawdę te wyrażenia w nawiasach oznaczają.
Czy tu chodzi ze mam sobie je sam zdefiniować na podstawie datasheet wyświetlacza lub
rys. nr 38 z poprzedniej strony?

Pozdrawiam; Mac



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

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

Mac napisał(a):
jednak nigdzie nie ma zdefiniowane co tak naprawdę te wyrażenia w nawiasach oznaczają


A do kodu na płycie DVD zaglądał ? ;) ... bo coś mi pachnie że ani trochę

_________________
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: 23 sie 2014, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Kolega zajrzyj do pliku lcd44780.h - i tam masz wszystkie #define pod komentarzem "komendy sterujące"

Co do tej lekcji, to wg. mnie ona ma głębszy sens niż napisanie biblioteki do tego LCD ;)
Ja dzięki niej nauczyłem się pisania bibliotek właśnie korzystając z #if, #endif, #define. Piszesz sobie program i możesz sobie wyłączać nie potrzebne rzeczy :), ewentualnie mieć funkcję w budowie, a projekt Ci się skompiluje bo ten kawałek kodu kompilator omija. Coś pięknego :D

Nie wiem czy to było zamierzenie Pana Mirka, ale świetnie mu to wyszło pod tym względem.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2014, o 12:41 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Dzieki za pomoc - oczywiście jak zwykle macie racje - nie zaglądałem do kodu na dvd ;-) a tam wszystko jest.

Przy okazji zapytam się - gdzie się włącza w eclipse możliwość ładowania pliku do eeprom?

Dość teorii mam zamiar w końcu uruchomić ten wyświetlacz i napisac cos na nim praktyka wiadomo lepiej uczy niż suche analizowanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2014, o 13:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Mac napisał(a):
Przy okazji zapytam się - gdzie się włącza w eclipse możliwość ładowania pliku do eeprom?


Wejdź w Project->Properties->AVR->AVRDude i w zakładce Flash/EEPROM i zaznacz opcję "from build" w obszarze Upload EEPROM Image.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2014, o 14:40 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Dzieki Jacek

jeszcze 1 sprawa - niespodzianka mkavrcalculator wersja free nie obsługuje atmegii88 - mam pełną wersje na dvd ale w kompie w zainstalowanych programach niemoge znaleźć zainstalowanego mkavr aby go odnistalowac żeby zainstalować pełną wersje

------------------------ [ Dodano po: 1 minucie ]

wie kotś jak to zrobić



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

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

Mac napisał(a):
mam pełną wersje na dvd


Na DVD nie ma i nigdy nie było pełnej wersji :(

Mac napisał(a):
w zainstalowanych programach niemoge znaleźć zainstalowanego mkavr aby go odnistalowac żeby zainstalować pełną wersje


Nic nie trzeba odinstalowywać itp .... pełna wersja jest gdy się ją zakupi w sklepie i wtedy otrzymuje się plik licencyjny do programu

_________________
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: 24 sie 2014, o 14:50 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

heh - tak to wygląda



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2014, o 17:47 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

Witam ponownie ;-)

Po 5 tyg. pracy za granicą wracam w końcu do mojego hobby;-) ( elektronika i jezyk c )
czyli do punktu w którym przerwałem naukę obsługi tego wyświetlacza.
Moim aktualnie marzeniem jest stworzyć programowalny termostat w którym możliwe by było ustalanie na wyświetlaczu temp. jaką ma trzymać i wartość histerezy.

Jeśli ktoś już ma coś takiego za sobą z chęcią zapoznam się z kodem i wysłucham rad ;-)

Pozdrawiam Mac



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2014, o 09:16 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

pyt. do funkcji itoa()

funkcja ta powinna zamieniać string na liczbę typu int ( 10-tną lub 16-ową)
string - rozumiem to że jakikolwiek ciąg znaków, tym czasem zmienia się tylko liczba 10-tna na 16-owa i na odwrót.
wywołuje ją w programie w taki sposób:

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


w takim przykładzie ładnie się wyświetliła liczba 135, chociaż eclipse zgłosił jakies ostrzeżenie:
../main.c:68: warning: implicit declaration of function 'itoa'
../main.c:68: warning: passing argument 1 of 'lcd_str' makes pointer from integer without a cast



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 paź 2014, o 19:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Wygląda na to, że nie masz zainkludowanego pliku stdlib.h w bibliotece do lcd. Jeśli to Mirkowa biblioteka to sprawdź czy na początku pliku lcd44780.c masz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mac napisał(a):
pyt. do funkcji itoa()

funkcja ta powinna zamieniać string na liczbę typu int ( 10-tną lub 16-ową)

Funkcja itoa (jak też utoa, ltoa, ultoa) służy do zamiany liczb całkowitych na string. Do zamiany stringa na liczbę służą funkcje atoi, atol, atof.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2014, o 07:54 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 141
Lokalizacja: 3-miasto
Pomógł: 0

przy wgrywaniu programu 1 wire eclipse wyswietla takie błędy- ktoś wie co to znaczy?
avrdude: Device signature = 0x1e910a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "wyswietlacz1.hex"
avrdude: input file wyswietlacz1.hex auto detected as Intel Hex
avrdude: ERROR: address 0x0810 out of range at line 129 of wyswietlacz1.hex
avrdude: read from file 'wyswietlacz1.hex' failed

avrdude done. Thank you.

Compiled special for http://forum.atnel.pl (v5.11.1)

avrdude finished

z góry dziękuje za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2014, o 21:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Mac napisał(a):
przy wgrywaniu programu 1 wire eclipse wyswietla takie błędy- ktoś wie co to znaczy?
avrdude: Device signature = 0x1e910a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "wyswietlacz1.hex"
avrdude: input file wyswietlacz1.hex auto detected as Intel Hex
avrdude: ERROR: address 0x0810 out of range at line 129 of wyswietlacz1.hex
avrdude: read from file 'wyswietlacz1.hex' failed

avrdude done. Thank you.

Compiled special for http://forum.atnel.pl (v5.11.1)

avrdude finished

z góry dziękuje za pomoc


topic8769.html#p98328

z Niebieskim pozdRowieniem,
Doman89



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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