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



Teraz jest 2 wrz 2025, o 04:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 21 sie 2015, o 20:47 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

Witam.
Uczę się z książki Mikrokontrolery AVR Język C Podstawy programowania - M. Kardaś. Chciałem wyświetlić dane z RTC na LCD. Do lcd używam biblioteki Radzia.

Gdy w kodzie głównym nie ma żadnych komend z TWI wyświetlacz działa poprawnie. Po załączeniu komendy "TWI_read_buf(*******);" wyświetlacz nie pokazuje nic.
Proszę o pomoc.
(Wyświetlacz podłączony z użyciem BusyFlag, na 4rech pinach, wszystko na PORTB). Rezystory do TWI też są ładnie. Błędów w połączeniu na 100% nie ma.

Po sprawdzeniu "programowym debugerem" (while (1) co linijkę) zauważyłem, że program wiesza się po wpisaniu adresu urządzenia ( TWI_write(adr); ), tylko nie wiem co mogę w związku z tym zrobić. Przerzucam się dopiero z Arduino na C, i że tak powiem, jestem totalna zieleń :p

main.c

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


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


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


RTC.C
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: 21 sie 2015, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
To chyba nie to, ale masz też błąd:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

brakuje "wykrzyknika"
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: 21 sie 2015, o 21:14 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

Wiem, ale po przeczytaniu tego, wywaliłem wykrzyknik. Z nim, czy bez, wyświetlacz nie działa :(
http://www.atnel.pl/i2c_twi_lib_stop_error.html



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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Poprawna wersja to oczywicie ta bez wykrzyknika.

------------------------ [ Dodano po: 17 minutach ]

Brakuje Ci funkcji ustawiającej prędkość na I2C.
Poczytaj BB, a znajdziesz tam funkcję:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

robimy to w ustawieniach projektu. Zobacz tutaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2015, o 23:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

anshar napisał(a):
Poprawna wersja to oczywicie ta bez wykrzyknika.

- sorry - patrzyłem tylko do BB nie czytając errat.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2015, o 18:15 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

Niestety nic nie poszło dalej :( Wrzuciłem F_CPU do toolchaina. Swoją drogą dzięki wielkie za rozjaśnienie tego :) rozebrałem funkcję TWI_read_buf na czynniki pierwsze... niestety wyświetlacz nie pokazuje nic. Linia kodu po której LCD przestaje wyświetlać napis "TEST" zaznaczona w kodzie...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kod funkcji "TWI_read
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: 23 sie 2015, o 19:02 
Offline
Moderator
Avatar użytkownika

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

To zacznij od schematu jak to podłączyłeś - bo tak to można pisać i pisać i nie znajdziemy gdzie babola robisz .... a na płycie DVD w książce masz na 100% działający kod do skompilowania

_________________
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 2015, o 19:29 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

Mirku niestety nie mam napędu w laptopie :/ Może mogę gdzieś kupić samo DVD w wersji cyfrowej, wtedy niejako rozwiązałbym problem..?
Schemat:
Obrazek

RTC jest podpięty w module. Oczywiście rezystory 4.7k też są podpięte. Sam LCD działa, aż do zaznaczonej wcześniej linii kodu...



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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zobacz na ten schemat PCF8583, zwróć uwagę gdzie jest podłączony pin A0, który odpowiada za wybór adresu, w tym przypadku 0xA2.
Z tego co pamiętam to gdy:
A0 podłączony do Vcc to ustawiony jest adres 0xA2, a gdy
A0 podłączony do GND to 0xA0

A jak jest u Ciebie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2015, o 20:02 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

U mnie jest podłączony do masy, ale sprawdzałem obydwa adresy i jest tak samo...:(



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

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

bartibv napisał(a):
Mirku niestety nie mam napędu w laptopie :/ Może mogę gdzieś kupić samo DVD w wersji cyfrowej, wtedy niejako rozwiązałbym problem..?

Wiesz co? ja bym zrozumiał, że jesteś na wyspie bezludnej i masz tylko tego laptopa bez napędu DVD ... ale w dzisiejszych czasach ? nie mów mi, że jeśli sam nie masz to nie znasz kogoś kto ma taki napęd, w szkole nawet - no gdziekolwiek ... sorki ale troszkę uważam to za sztuczny problem ... Myślę, że mniej czasu zajęłoby ci znaleźć gdzieś kogoś z DVD i skopiować sobie kod na pendrive ...

ale ok tymczasem - to powiedz mi ? ... ty sobie przepisujesz kody bibliotek z książki? i nie sądzisz, że mogłeś już na tym etapie z tysiąc błędów popełnić ? ... Troszkę na własne życzenie się katujesz - tym bardziej jak widzę, co ty wyprawiasz "RĘCZNIE" przed wejściem w pętlę główną ... ręcznie jakieś twi start, twi stop .... .... sorki ale już tu sobie sam bat na siebie kręcisz

Zapytam tylko jakie masz wydanie książki ? To starsze w miękkiej oprawie ? jeśli tak to zajrzyj do aktulalizacji na stronie atnel bo tam był mały błąd w którejś funkcji bodajże twi_stop() - trzeba poprawić

trzeba też inicjalizować TWI - co niby już robisz - ale w porównaniu do książki nawet to dalej już mieszasz niemożebnie :(

poza tym jak możesz wklejać schemat , który zawiera kupę i to poważnych błędów i pisać sobie w tekście żeby nie patrzeć na schemat bo ty masz jednak rezystory podciągające włączone na SDA i SCL ..... sorki ale przy takim podejściu to podchodzisz niepoważnie i nie szanujesz czasu tych ludzi na forum, którzy chcą ci pomóc - bo co z innymi babolami ? to ma być zgadywanka ?LCD jest przecież źle podłączony a ja słyszę że niby coś działa do którejś linijki a przy takim podłączeniu jak na tym schemacie nic nie powinno działać :(

proszę więc potraktuj to nieco poważniej i narysuj ten schemat poprawnie i tak jak to masz podłączone - jeśli chcesz żeby ci pomóc .... zamiast urządzać tu kalambury

poza tym zakładając nawet że jakaś linijka tekstu ci się wyświetla a później ZONK to znaczy że masz jakiegoś MEGA BABOLA na I2C i może nawet te rezystory masz źle podłączone - i co ? mamy zgadywać dalej jak ? Chce ci się tyle czasu tracić zamiast RAZ A PORZĄDNIE opisać problem ?

Poza tym powiedz mi - w całej książce piszę to kilkakrotnie - NIE DEFINIUJE się F_CPU w kodzie a ty co robisz ???

Kolejna rzecz ... czytałeś w książce o debugerze na jednej diodzie LED ? ... pewnie też nie - no to nawet poradnik wideo do tego nakręciłem

http://mirekk36.blogspot.com/2014/04/pu ... ednej.html

oglądałeś to? ... jeśli nie to obejrzyj i zacznij stosować - znajdziesz miejsce gdzie ci się kod zatrzymuje a ja mogę się założyć tu i teraz że zatrzymuje się na obsłudze TWI bo coś sprzętowo masz nie tak - a funkcje dla uproszczenia przekazu pisałem w sposób blokujący - czyli jak ktoś np nie da tych rezystorów albo źle podłączy coś to się zatrzyma i tak miało być w moim założeniu bo wtedy nawet łatwiej błąd znaleźć ... szczególnie takim debugerem i zrozumieć jak bardzo programowanie procków zależy od elektroniki a nie tylko od napisanego programu.

czekam w takim razie na pełne i poprawne przedstawienie problemu - ale liczę też że sprawdzisz sam to o czym napisałem wyżej , i być może nawet sam już to rozwiążesz - czego ci życzę

_________________
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 2015, o 14:15 
Offline
Nowy

Dołączył(a): 10 sie 2015
Posty: 16
Pomógł: 0

Panowie mam rozwiązanie tylko nie zabijajcie ! :D

Otóż okazało się, że na aukcji był błąd, opisany zegarek nie jest taki jak w BlueBooku, tylko jest DS1307, czego nie było widać, bo był przytarty uC, ale doszedłem do tego mierząc miernikiem pinologię ;)
Także przepraszam Was wszystkich za zawracanie gitary, głupio mi strasznie! :(

Mirku to chyba jest pierwsze wydanie bluebooka, kupowałem "używkę". A co do DVD jestem na wyjeździe, gdzie nikogo nie znam i głupio mi prosić obce osoby o użyczenie komputera :p, nie mniej poradziłem sobie pobierając bibliotekę, ze strony Atnela, gdzie są "poprawki" :)

Odcinek o debugowaniu diodą oglądałem, tylko zamieniłem diodę, na komendę wyświetlania napisu "test", którą wklejałem linijka po linijce sukcesywnie jak na filmie, po to też rozbierałem funkcję, żeby sprawdzić dokładnie w którym miejscu funkcji TWI_read_buf się wywala :)

Także jeszcze raz przepraszam za kłopot, idę dłubać i próbować, obiecuję się poprawić zarówno w opisie problemu jak i sprawdzaniu modułów:) Przepraszam Was serdecznie jeszcze raz i dzięki za cierpliwość:)



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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Jeśli masz DS1307 to przecież łatwo możesz przerobić ten przykład z BB odnośnie PCF8583.

Zobaczacz ten wątek. ;)

A odnośnie płyty to idź kolego do punktu ksero lub jakiegoś zakładu fotograficznego, kup tam pendriva i poproś, aby Ci skopiowali na niego tą płytę.
Zaoszczędzisz sobie mnóstwo czasu.



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