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



Teraz jest 18 sty 2025, o 07:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 14 maja 2014, o 22:38 
Offline
Nowy

Dołączył(a): 02 maja 2014
Posty: 10
Pomógł: 0

Witam.
Mam mały problem, a pomysłów na rozwiązanie brak :(. Chodzi o to, że do miktorkontrolera ATmega128A mam podłączony LCD alfanumeryczny 4*16 (i nie tylko, ale to teraz nie jest ważne).
Piny wyświetlacza są podłączone do mikrokontrolera:

RS -> PA7
E -> PA5
D4 -> PF3
D5 -> PF4
D6 -> PF5
D7 -> PF6

Problem jest taki, że wyświetlacz w ogóle nie reaguje :/
Biblioteka na 100% działa, bo na identycznym kodzie odpalałem ten wyświetlacz na ATmega16 (zmienione tylko piny wyświetlacza, taktowanie i procesor).
Wcześniej odpalałem na rezonatorze 8 MHz, teraz próbowałem na wewnętrznym 1 MHz i zewnętrznym 16 MHz. JTAG i kompatybilność z ATmega103 wyłączone.
Połączenia elektryczne na pewno są ok, kilka razy sprawdzałem multimetrem z testerem ciągłości obwodu + do każdego pinu z osoba (w złącze do LCD) podłączałem diode LED i nią migałem.

Kodu na razie nie wrzucam, bo jest on sprawdzony na innym mikrokontrolerze i podejrzewam, że po prostu jakiegoś fuse bitu nie przestawiłem czy coś w tym stylu.
Byłbym bardzo wdzięczny, jakby ktoś pomógł, a błąd pewnie jest banalny ;)

Pozdrawiam,
Rafał J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2014, o 23:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

A czy AT128 i AT16 maja takie same timer? Porownywales DSy tych ATMEG?

Sądzę że kod jest ważny i by pomógł bo kula nic nie podpowiada.

A czy w projekcie przestawiles procka ze 128 na 16 i zrobiles clean ?

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 06:56 
Offline
Nowy

Dołączył(a): 02 maja 2014
Posty: 10
Pomógł: 0

majster napisał(a):
A czy AT128 i AT16 maja takie same timer? Porownywales DSy tych ATMEG?

Nie korzystam z żadnych timerów. Nie nie porównywałem, ale sam wyświetlacz powinien chodzić i na jednym i na drugim, to uniwersalna biblioteka.

HD44780.h

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




HD44780.c

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



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.



majster napisał(a):
A czy w projekcie przestawiles procka ze 128 na 16 i zrobiles clean ?


Oczywiście przestawiłem. Clean? Co masz na myśli?

Pozdrawiam,
Rafal J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 07:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Nie znam tej biblioteki ale co mogę zaproponować tak na szybko, to spróbuj może odpalić to na jednym porcie i piny danych daj poklei najlepiej od 0,1,2,3.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 11:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Rafal.J.645 napisał(a):

majster napisał(a):
A czy w projekcie przestawiles procka ze 128 na 16 i zrobiles clean ?


Oczywiście przestawiłem. Clean? Co masz na myśli?

Pozdrawiam,
Rafal J.



Jeżeli używasz ECLIPSE to po zmianie procesora w projekcie kliknij prawym klawiszem myszki na projekt i zrób CLEAN a następnie BUILD jeżeli działało na atmega 16 a nie używasz timerów to może to być przyczyną że na Atmega 128 nie chce działać to samo co działało na 16.

Korzystasz ze stykówki ? gotowej płytki ? czy płytki testowej ?

jak ze stykówki oglądnij jeszcze raz połączenia może coś źle podłączyłeś ale ja bym obstawiał na to że nie czyściłeś projektu po zmianie procesora w projekcie.
Pozdrawiam

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 11:55 
Offline
Nowy

Dołączył(a): 02 maja 2014
Posty: 10
Pomógł: 0

Korzystam z AVR Studio. Jak wcześniej pisałem, uruchamiałem już na tej ATmedze proste programy do migania diodą, więc raczej po stronie ustawień procesora w IDE jest wszystko ok.
Nie używam stykówki, mam gotową płytkę zrobioną pod konkretny projekt. Fakt, że zrobiłem kilka głupich błędów w czasie jej projektowania i musiałem pozamieniać piny wyświetlacza
przy pomocy krótkich przewodów. Ale wszystkie piny wyświetlacza są odpowiednio połączone; testowałem przy pomocy diody LED.

Pozdrawiam,
Rafal J.



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

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Jeżeli używasz AtmelStudio to z tego co pamiętam tam trzeba ustawić FCPU

spróbuj z takim mainem:


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



Głowy nie dam sobie obciąć że to pomoże ale z tego co mi się kojarzy to w AS trzeba zdefiniować prędkość taktowania w ECLIPSE ustawiasz to w projekcie a w AS definiujesz w programie.
Nie używam AS więc mi się tylko kojarzy cosik takiego

sprawdź też czy ścieżka do HD44780.h jest prawidłowa i czy plik ma duże HD może nie czyta ci biblioteki.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 13:46 
Offline
Nowy

Dołączył(a): 02 maja 2014
Posty: 10
Pomógł: 0

Niestety to też nie to :( F_CPU w AVR Studio też można ustawić we właściwościach projektu, i tak mam zrobione. Jak podłączyłem migającą diode to ustawiłem czasy 0,5s świecenia, 0,5s przerwy,
i tak na oko by się zgadzało. Nazwy plików są ok, przed chwilą się upewniłem i na pewno jest ok. Kompilator nie wyrzuca żadnych błędów ani ostrzeżeń. Przed chwilą jeszcze przeczytałem,
że ATmega128 w niektórych portach ma takie ograniczenie, że można zapisać/zczytać tylko cały port na raz, nie można poszczególnych pinów. Nie wiem, czy to prawda, ale jeśli tak, to może akurat wybrałem takie porty? Zbytnio nie potrafię czytać dokumentacji, ale próbowałem znaleźć coś na ten temat i nic nie znalazłem. A z drugiej strony jak podłączałem LED'a to bez problemu mogłem
każdym pinem z osobna sterować.

Pozdrawiam,
Rafal J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 13:48 
Offline
Moderator
Avatar użytkownika

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

Rafal.J.645 napisał(a):
Zbytnio nie potrafię czytać dokumentacji, ale próbowałem znaleźć coś na ten temat i nic nie znalazłem


dlatego z pełną odpowiedzialnością mogę śmiało polecić to:

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

wtedy poznasz to od środka .... i zresztą nie tylko to... wiele innych przydatnych rzeczy

_________________
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: 15 maja 2014, o 14:43 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Rafal.J.645 napisał(a):
Niestety to też nie to :( F_CPU w AVR Studio też można ustawić we właściwościach projektu, i tak mam zrobione. Jak podłączyłem migającą diode to ustawiłem czasy 0,5s świecenia, 0,5s przerwy,
i tak na oko by się zgadzało. Nazwy plików są ok, przed chwilą się upewniłem i na pewno jest ok. Kompilator nie wyrzuca żadnych błędów ani ostrzeżeń. Przed chwilą jeszcze przeczytałem,
że ATmega128 w niektórych portach ma takie ograniczenie, że można zapisać/zczytać tylko cały port na raz, nie można poszczególnych pinów. Nie wiem, czy to prawda, ale jeśli tak, to może akurat wybrałem takie porty? Zbytnio nie potrafię czytać dokumentacji, ale próbowałem znaleźć coś na ten temat i nic nie znalazłem. A z drugiej strony jak podłączałem LED'a to bez problemu mogłem
każdym pinem z osobna sterować.

Pozdrawiam,
Rafal J.



Polecam dla kolegi wykonać kilka kroków:

1. Sprawdź, czy JTAG jest włączony, jak jest to wyłącz jakimś programem, nawet chyba darmowy mkAVRCalculator obsługuje ATmega128. U mnie były problemy z włączonym JTAG.

2. Tak jak ktoś wyżej pisał - podłącz wszystko pod jeden port, niech będzie ten A. A w swoim pliku main.c daj na początku:

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


oczywiście jeśli nie używasz odczytu z LCD.

Może to jest jakaś mała zmiana, ale u mnie był problem z portami, dopiero po zastosowaniu DDRx |= 0xFF pomogło.
Nie wiem jak to u ciebie się sprawdzi, ale spróbować nie zaszkodzi :)

Pozdrawiam

_________________
Mam 16 lat, nie jestem zawodowcem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2014, o 15:26 
Offline
Nowy

Dołączył(a): 02 maja 2014
Posty: 10
Pomógł: 0

DamCos napisał(a):
1. Sprawdź, czy JTAG jest włączony, jak jest to wyłącz jakimś programem, nawet chyba darmowy mkAVRCalculator obsługuje ATmega128. U mnie były problemy z włączonym JTAG.

JTAG oczywiście wyłączony.

DamCos napisał(a):
2. Tak jak ktoś wyżej pisał - podłącz wszystko pod jeden port, niech będzie ten A. A w swoim pliku main.c daj na początku:


Niestety ale nie mam takiej możliwości, bo płytkę mam gotową :(. Ale próbowałem zrobić tak:

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


Niestety dalej nic :(

Pozdrawiam,
Rafal J.


Edit. !!!

No więc się udało!
Nie wiem dla czego nie działało ale już jest ok. Na początku testowałem na takim podłączeniu i kodzie jak na początku tematu podałem. - Nie działało.
Później wiele różnych prób, w tym praca na bibliotece z obsługą R/W. Później kolejne próby bez obsługi R/W i się okazało, że nie podpiąłem R/W do masy.
Podłączyłem wszystko jeszcze raz tak jak było na początku, i.... działa!
Najbardziej boli mnie to, że działa, a nie wiem czemu nie działało :(.

Dzięki za zainteresowanie tematem !! ;)

Pozdrawiam,
Rafal J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2014, o 06:42 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

A no widzisz - drobny błąd a ile znaczy. :) Ja to jak podpinam wyświetlacz to analizuję każdy pin po kolei :D

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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ł: Brak zidentyfikowanych użytkowników 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