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



Teraz jest 11 mar 2026, o 05:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 24 sty 2015, o 12:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

Proszę o zwrócenie uwagi na 105 linijkę. Czy w ten sposób można przesłać TWDR do LCD?
Bo po skompilowaniu tego programu i próbie przesłaniu do Atmegi wartości TWDR wówczas ekran jest pusty.
Jeśli wysyłam jakiś tekst funkcją "write_text" to wszystko działa.
Proszę o pomoc.


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



Ostatnio edytowano 24 sty 2015, o 13:40 przez matej1410, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 12:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Jeżeli w TWDR znajduje się wartość nie obsługiwana przez LCD to nic się nie pojawi.

Przykładowo:
jeżeli wartość w TWDR będzie wynosiła 0x31 to na wyświetlaczu będziesz miał wyświetlone 1
gdy 0x80 to nic nie będziesz miał wyświetlone (jeżeli masz wyświetlacz oparty na HD44780).

Sprawdź sobie tabelę ze znakami dla sterownika LCD - w tedy może Ci się rozjaśni dlaczego nic
się nie pojawia.

Jeżeli dobrze pamiętam to w bibliotekach mirkowych jest funkcja która wyświetla liczbę szesnastkową na LCD

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 13:05 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Rejestr TWDR po włączeniu procesora zawiera wartość 0b11111111. I teraz wysyłasz tą wartość bez żadnej "obróbki" do LCD.
Więc nic dziwnego, że wyświetlacz nic nie pokazuje. Jeśli spodziewasz się zobaczyć jakąś liczbę odpowiadającą wartości wpisanej do tego rejestru to musisz sobie dopisać funkcję zamieniającą tą liczbę w rejestrze na odpowiedni string czyli skorzystać z funkcji itoa(). Zapoznaj się z poradnikiem Mirka o kodach ASCII -> http://mirekk36.blogspot.com/2014/06/jak-wysac-zmienna-kody-ascii.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 13:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

ale mamy funkcję zapis bajtu do wyświetlacza a TWDR to zbiór 8 bitów. Nie rozumiem dlaczego konwertować to na coś innego? Czyli mam skorzystać z funkcji itoa, która już jest w bibliotekach standardowych tak?

------------------------ [ Dodano po: 5 minutach ]

Ok. Wykonałem taką procedurę:

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


teraz na wyświetlaczu widzę liczbę 255.

czyli mój DS1621 daje same jedynki na tych 8 bitach. Czyli po włączeniu mamy same jedynki a potem już nic się nie dzieje a przecież pętla nieskończona jest. Może ja jakoś źle skonfigurowałem TWI?

------------------------ [ Dodano po: 10 minutach ]

to teraz zamiast 255 mam ff :) zmieniliśmy zatem na hexa a tu chodzi o wartości dziesiętne więc z powrotem nastawię na 10. Tylko dlaczego ta wartość się nie zmienia tylko cały czas 255 czyli maksymalna temperatura?



Ostatnio edytowano 24 sty 2015, o 13:44 przez matej1410, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 13:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

W programie głównym masz deklaracje funkcji:

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


A nie powinno ich być.
Biblioteki do TWI skąd masz?

Źle obsługujesz TWI. Nie wysyłasz żadnych danych (data), oraz bitu potwierdzenia (ack).

Kompilator żadnych warningów nie wyświetla?

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 13:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

mam jeszcze dwa pliki dołączone. TWI.c

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


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


------------------------ [ Dodano po: 2 minutach ]

Kompilator wyswietla warningi "Implict declaration of function itoa"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 14:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Niepoprawnie obsługujesz magistralę TWI. Poczytaj coś o niej.
Poczytaj również w nocie DS1621 jak powinna wyglądać komunikacja za pomocą TWI - jaki adres ma Twoje urządzenie, w jakich rejestrach znajduje się temperatura, oraz czy musisz wysłać polecenie dokonania pomiaru.


Autor postu otrzymał pochwałę

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 14:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

jak w ogóle powinien byc skonfigurowany PORTC? Przecież tam w SDA dane wędrują w dwie strony więc nie można jednoznacznie określić że DDRC=0; albo DDRC=0xff;



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 14:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Masz książkę Mirka? Tam jest to super opisane.

Procesor sam zajmie się odpowiednim ustawieniem tych pinów. Ty tylko musisz wywoływać procedury start, stop, oraz przesyłania i odbioru danych. No i ustawić BITRATE dla twi

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 14:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

właśnie nie mam :( ale postaram się zrobić jak mówisz. Znalazłem informacje że ten adres dla DS1621 wynosi 1001 czyli ogólnie 1001 0000 czyli 0x90.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 14:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

Jeżeli piny A2, A1, A0 układu DS1621 są podłączone do masy (jeżeli Ty je masz podłączone) oraz gdy wysyłasz dane do DS1621. Natomiast gdy odczytujesz dane adres ten przyjmuje wartość 0x91.

Pierwszy bit (najmniej znaczący) przyjmuje wartość 0 lub 1 w zależności czy chcesz wysłać dane do Slave czy odebrać dane.

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 16:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 paź 2013
Posty: 143
Lokalizacja: Zamość
Pomógł: 0

Wszystko już działa :) Problemem było moje niezastosowanie wartości 0xEE, 0xAA, 0x90, 0x91 które są podstawą w tym przypadku niezbędną do uruchomienia TWI wartości te można odnaleźć w nocie katalogowej czujnika DS1621.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2015, o 17:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 sty 2013
Posty: 169
Lokalizacja: Silesia - P-ce
Pomógł: 10

To super, że Ci się udało, oraz że wiesz w czym miałeś problem;)

Powodzenia w kodowaniu;)

_________________
Niewiele trzeba by być szczęślwym.Wystarczy chcieć



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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