| |
sq3mve | 24.08.2017 20:30:54 |
Grupa: Użytkownik
QTH: JO82MB
Posty: 988 #2458128 Od: 2011-2-24
Ilość edycji wpisu: 1 | Witam
Od niedawna bawię się mikroprocesorami PIC.
Obecnie próbuję zmigrować jeden projekt z PIC16F877A na PIC16F627A. PIC16F877A z zewnętrznym oscylatorem 10 MHz. PIC16F627A z wewnętrznym oscylatorem 4 MHz.
No i wyskoczył problem z obsługą wyświetlacza LCD 2x16.
Za chiny nie mogę zmusić PIC16F627A do wyświetlenia tekstu na wyświetlaczu. :-(
Korzystam zarówno z własnej biblioteki obsługującej LCD jak i pobranej ze strony Microchip'a.
Porty są odpowiednio skonfigurowane i podłączone (PIC16F627A): RS -> A6 RW -> masa E -> A7 D4-D7 -> A0-A3
Ma ktoś z Was doświadczenie w tej materii i mógłby mi podpowiedzieć jak to ugryźć?
<edit> Zapomniałem dodać, że obie biblioteki na PIC16F877A nie mają problemu z poprawnym wyświetlaniem tekstów. </edit>
Pozdrawiam
_________________ Mariusz SQ3MVE http://sq3mve.marph.pl ----------------------------------- Dobrze jest gdy satysfakcja mówiącego nie przewyższa znacznie satysfakcji słuchających. Jerzy Bralczyk ----------------------------------- Najlepszy hosting w Polsce już od 100 zł. |
| |
Electra | 31.10.2024 23:58:03 |
|
|
| |
sq6ade | 24.08.2017 21:31:25 |
Grupa: Użytkownik
QTH: Wrocław (Breslau) Party-n
Posty: 15171 #2458159 Od: 2008-3-21
| Może przez to nieszczęsne ignorowanie flagi BUSY jak RW ustawione tylko na zapis. _________________ Wiosna się budzi w całej naturze Witana rzewnym słowików pieniem, W zielonym gaju, ponad strumieniem, Kwitną prześliczne dwie róże.
|
| |
SP6LTD | 24.08.2017 21:58:21 |
Grupa: Użytkownik
QTH: JO81LC
Posty: 56 #2458172 Od: 2017-7-7
| Raczej nieprawdopodobne przy identycznym sofcie i zwolnionym zegarze.
|
| |
sq3mve | 25.08.2017 08:49:30 |
Grupa: Użytkownik
QTH: JO82MB
Posty: 988 #2458250 Od: 2011-2-24
| Witam
Soft jest oparty na opóźnieniach czasowych i nie jest brana pod uwagę flaga BUSY.
I tak na marginesie, dla PIC16F627A mam stosowne ustawienia informujące o zegarze procka:
#define _XTAL_FREQ 4000000
Więc teoretycznie czasy opóźnień powinny być wyliczane prawidłowo.
Sprawdzę co da ich zwiększenie...
Pozdrawiam _________________ Mariusz SQ3MVE http://sq3mve.marph.pl ----------------------------------- Dobrze jest gdy satysfakcja mówiącego nie przewyższa znacznie satysfakcji słuchających. Jerzy Bralczyk ----------------------------------- Najlepszy hosting w Polsce już od 100 zł. |
| |
sq6ade | 25.08.2017 09:18:20 |
Grupa: Użytkownik
QTH: Wrocław (Breslau) Party-n
Posty: 15171 #2458253 Od: 2008-3-21
| Nie znam dobrze picków ale widzę że porty mogą mieć różne funkcje w zależności od ustawionych rejestrów sterujących. Różni się to między tymi dwoma układami jeśli chodzi o PORTA. "SUMMARY OF REGISTERS ASSOCIATED WITH PORTA" _________________ Wiosna się budzi w całej naturze Witana rzewnym słowików pieniem, W zielonym gaju, ponad strumieniem, Kwitną prześliczne dwie róże.
|
| |
sp9uxy | 25.08.2017 09:19:56 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458254 Od: 2009-8-25
| Obsługa LCD jest napisana w C czy w asemblerze? |
| |
sp9uxy | 25.08.2017 09:29:41 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458257 Od: 2009-8-25
|
Nie znam się ale wypowiem się. Co w tym dziwnego że bity w PORTA mogą mieć różne funkcje?
W 877A nie ma bitów 6 i 7 w PORTA. |
| |
sq6ade | 25.08.2017 09:48:27 |
Grupa: Użytkownik
QTH: Wrocław (Breslau) Party-n
Posty: 15171 #2458261 Od: 2008-3-21
| Skoro robi migrację to raczej oczywiste że nie w asm. Ale to wiedzą ci co coś programują . Spamerzy raczej nie. _________________ Wiosna się budzi w całej naturze Witana rzewnym słowików pieniem, W zielonym gaju, ponad strumieniem, Kwitną prześliczne dwie róże.
|
| |
sp9uxy | 25.08.2017 09:56:56 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458265 Od: 2009-8-25
Ilość edycji wpisu: 1 | sq6ade pisze:
Skoro robi migrację to raczej oczywiste że nie w asm. Ale to wiedzą ci co coś programują . Spamerzy raczej nie.
No właśnie ty coś tam programujesz i tak to wygląda.
Znowu udowadniasz że : nie znasz się ale wypowiesz się. Twój spam już osiągną poziom ponad 11k.
Migracje można robić w asemblerze i w C. Jak byś znał C to byś nie spamował. |
| |
sq6ade | 25.08.2017 10:07:15 |
Grupa: Użytkownik
QTH: Wrocław (Breslau) Party-n
Posty: 15171 #2458266 Od: 2008-3-21
| No cóż - można i kod wynikowy HEX dekompilować do asm migrować i kompilować. Nikt nie zabrania tarzania się w pokrzywach. Pomóż koledze z LCD a swoje charakterystyczne złośliwe docinki zachowaj dla siebie.
http://sp7pki.iq24.pl/default.asp?grupa=3538&temat=438104 _________________ Wiosna się budzi w całej naturze Witana rzewnym słowików pieniem, W zielonym gaju, ponad strumieniem, Kwitną prześliczne dwie róże.
|
| |
sp9uxy | 25.08.2017 10:09:56 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458270 Od: 2009-8-25
|
Złośliwe docinki jak zwykle od ciebie jako pierwsze a dalej to tylko pokłosie. |
| |
Electra | 31.10.2024 23:58:03 |
|
|
| |
wojrum | 25.08.2017 10:36:07 |
Grupa: Użytkownik
QTH: Biłgoraj
Posty: 12 #2458277 Od: 2011-4-8
Ilość edycji wpisu: 2 | Może problem występować przez nieprawidłowe zainicjalizowanie portu - chodzi o współdzielenie pinów jako analogowych(komparator analogowy-ANx) lub cyfrowych (PORTAx). Tu poniższy kawałek w asemblerze - inicjowanie jako cyfrowy: MOVLW 0x07 ;Turn comparators off and MOVWF CMCON ;enable pins for I/O ;functions
P.S. Pisząc po ludzku(w C): CMCON=0x07;
Sprawdź czy nie ma w kodzie już podobnej inicjalizacji. _________________ 73! Wojtek SP8XW |
| |
sp9uxy | 25.08.2017 12:44:34 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458314 Od: 2009-8-25
Ilość edycji wpisu: 1 | wojrum pisze:
Może problem występować przez nieprawidłowe zainicjalizowanie portu - chodzi o współdzielenie pinów jako analogowych(komparator analogowy-ANx) lub cyfrowych (PORTAx). Tu poniższy kawałek w asemblerze - inicjowanie jako cyfrowy: MOVLW 0x07 ;Turn comparators off and MOVWF CMCON ;enable pins for I/O ;functions
P.S. Pisząc po ludzku(w C): CMCON=0x07;
Sprawdź czy nie ma w kodzie już podobnej inicjalizacji.
Używane przez kolegę piny nie mogą być użyte jako ADC.
Ale mogą być : RA6 dwukierunkowym I/O portem, wyjściem oscylatora kwarcowego, wyjściem zegara , RA7 dwukierunkowym I/O portem, wejściem oscylatora kwarcowego, wejściem zegara. |
| |
wojrum | 25.08.2017 13:34:26 |
Grupa: Użytkownik
QTH: Biłgoraj
Posty: 12 #2458324 Od: 2011-4-8
| W 877A bity w CMCON są dafaultowo ustawione na wartość 7 - I/O, w 827A na zero - wejścia analogowego komparatora. Poza tym w 877A defaultowo piny są ustawione w ADCON1 jako wejścia ADC, w 827A nie występuje. _________________ 73! Wojtek SP8XW |
| |
wojrum | 25.08.2017 13:50:17 |
Grupa: Użytkownik
QTH: Biłgoraj
Posty: 12 #2458338 Od: 2011-4-8
| [quote]Używane przez kolegę piny nie mogą być użyte jako ADC.
Ale mogą być : RA6 dwukierunkowym I/O portem, wyjściem oscylatora kwarcowego, wyjściem zegara , RA7 dwukierunkowym I/O portem, wejściem oscylatora kwarcowego, wejściem zegara.[/quote]
Oczywiście ten wypadek wystąpi jak złe są ustawienia oscylatora w bitach konfiguracyjnych. _________________ 73! Wojtek SP8XW |
| |
sq3mve | 25.08.2017 14:29:17 |
Grupa: Użytkownik
QTH: JO82MB
Posty: 988 #2458356 Od: 2011-2-24
| Witam
Przypomnę, że problem dotyczy PIC16F627A :-) Piszę w C, tak dla wyjaśnienia. Asembler to wyższy stopień wtajemniczenia :-) Wezmę się za niego jak już dobrze opanuję programowanie picków w C :-)
Porty mam skonfigurowane jako cyfrowe (CMCON=0x07) ;-)
A problem już rozwiązałem, przynajmniej częściowo. Pomogło wydłużenie kilku opóźnień.
Muszę jeszcze to dokładnie przećwiczyć, bo w jakichś 10% przypadków, po włączeniu zasilania, wyświetlacz się nie inicjalizuje. :-(
Może wystarczy wydłużyć opóźnienie przeznaczone na ustabilizowanie napięcia...
Pozdrawiam _________________ Mariusz SQ3MVE http://sq3mve.marph.pl ----------------------------------- Dobrze jest gdy satysfakcja mówiącego nie przewyższa znacznie satysfakcji słuchających. Jerzy Bralczyk ----------------------------------- Najlepszy hosting w Polsce już od 100 zł. |
| |
sq6ade | 25.08.2017 14:32:56 |
Grupa: Użytkownik
QTH: Wrocław (Breslau) Party-n
Posty: 15171 #2458357 Od: 2008-3-21
| Poszukaj biblioteki z obsługą r/w. Dodanie opóźnień przed i po impulsie E też nie zawadzi. _________________ Wiosna się budzi w całej naturze Witana rzewnym słowików pieniem, W zielonym gaju, ponad strumieniem, Kwitną prześliczne dwie róże.
|
| |
sp9uxy | 25.08.2017 16:24:27 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458410 Od: 2009-8-25
| sq6ade pisze:
Poszukaj biblioteki z obsługą r/w. Dodanie opóźnień przed i po impulsie E też nie zawadzi.
Po co biblioteka r/w? Tak aby tylko poszukać? |
| |
sp9uxy | 25.08.2017 16:28:35 |
Grupa: Użytkownik
QTH: Gliwice
Posty: 2075 #2458411 Od: 2009-8-25
| sq3mve pisze:
Witam
Przypomnę, że problem dotyczy PIC16F627A :-) Piszę w C, tak dla wyjaśnienia. Asembler to wyższy stopień wtajemniczenia :-) Wezmę się za niego jak już dobrze opanuję programowanie picków w C :-)
Porty mam skonfigurowane jako cyfrowe (CMCON=0x07) ;-)
A problem już rozwiązałem, przynajmniej częściowo. Pomogło wydłużenie kilku opóźnień.
Muszę jeszcze to dokładnie przećwiczyć, bo w jakichś 10% przypadków, po włączeniu zasilania, wyświetlacz się nie inicjalizuje. :-(
Może wystarczy wydłużyć opóźnienie przeznaczone na ustabilizowanie napięcia...
Pozdrawiam
Kolejność nauki powinna właśnie rozpoczynać się od asemblera, poznajesz wówczas mapę pamięci uP, rejestry, przerwania. Potem C, oczywiście pisząc w C często warto dla większej wydajności używać wstawek asemblerowych.
A próbowałeś czy z innym egzemplarzem LCD są też problemy? |
| |
wojrum | 25.08.2017 16:45:37 |
Grupa: Użytkownik
QTH: Biłgoraj
Posty: 12 #2458416 Od: 2011-4-8
| sq3mve pisze:
Witam
Przypomnę, że problem dotyczy PIC16F627A :-) Piszę w C, tak dla wyjaśnienia. Asembler to wyższy stopień wtajemniczenia :-) Wezmę się za niego jak już dobrze opanuję programowanie picków w C :-)
Porty mam skonfigurowane jako cyfrowe (CMCON=0x07) ;-)
A problem już rozwiązałem, przynajmniej częściowo. Pomogło wydłużenie kilku opóźnień.
Muszę jeszcze to dokładnie przećwiczyć, bo w jakichś 10% przypadków, po włączeniu zasilania, wyświetlacz się nie inicjalizuje. :-(
Może wystarczy wydłużyć opóźnienie przeznaczone na ustabilizowanie napięcia...
Pozdrawiam
Nie wiem w jakim stopniu kolega ma opanowaną technikę mikroprocesorową oraz ten wyświetlacz ale podzielę się wiedzą: Czepiając się programowania pic-a to są bity konfiguracyjne do odpowiedniego startu: 1. PWRTE - gdy jest na 0 to zadziała opóźnienie 72ms po włączeniu zasilania pic-a, 2. BOREN - gdy jest na 1 to zadziała opóźnienie (gdy PWRTE=0) 72ms od czasu gdy napięcie zasilania przekroczy odpowiednią do pracy wartość. Bity te umożliwiają reset układu po włączeniu zasilania bez stosowania elementów RC na wejściu MCLR, czy także jego wyeliminowaniu.
Jeśli chodzi o wyświetlacz to należy dawać opóźnienia pomiędzy instrukcjami w sekwencji inicjalizującej wyświetlacz (chociaż ja zrobiłem sprawdzając flage BUSY wyświetlacza i działało) które są podane w dokumentacji. Wyświetlacz wyrabiał się na 4MIPS-ach pic-a bez problemu. _________________ 73! Wojtek SP8XW |
| |
Electra | 31.10.2024 23:58:03 |
|
|