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



Teraz jest 16 lut 2025, o 11:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 kwi 2016, o 16:54 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Witam.

Zakupiłem ostatnio z sklepu Atnel wyświetlacz oled ssd1306 (Magistrlala SPI), podłączyłem go do Atmegi328p w następujący sposób:
VCC ---> VCC
GND --->GND
CLK(SCK) ---> PC5
MOSI ----> PC4
CS ----> GND
D/C ----> PC2
RST ----> PC3

Po podłączeniu, podążałem z pisaniem biblioteki do obsługi wyświetlacza zgodnie z poradnikiem Pana Mirka do momentu aby cokolwiek się na nim wyświetliło tzw "śmieci z pamięci"

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


pliki .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 plik 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.


Po zaprogramowaniu procesora nic nie wyświetliło się na wyświetlaczu. więc postanowiłem jeszcze raz oglądnąć poradnik do momentu uruchomienia wyświetlacza, złapałem kilka błędów przy pisaniu kodu, ale po ponownym zaprogramowaniu znowu nić się nie działa. Jakby miałby ktoś jakiś pomysł na rozwiązanie mojego problemu, będę wdzięczny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 kwi 2016, o 17:34 
Offline
Użytkownik
Avatar użytkownika

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

W pliku mk_ssd1306.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.


a powinno być:
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: 8 minutach ]

W pliku mk_ssd1306.h brakuje znaku tyldy ~:
Masz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


powinno być:
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: 1 kwi 2016, o 18:31 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Dziękuje za zainteresowanie tematem. Poprawiłem te błędy oraz dodałem jeszcze rezystory 4,7k podciągające VCC do SCL(CLK) i SDA(MOSI), ale dalej jedynie widać czarny ekran



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 kwi 2016, o 23:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

nie wiem dlaczego maszpodłączone:

CS ----> GND,

a za ccwilę definiujesz

#define CS (1<<3)
#define DC_PORT PORTC
#define DC_DDR DDRC

i jeszcze RST na tym samym pinie?

Zmień reset na inny pin. Dalej się nie zagłębiałem bo na telefonie ciężko

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 11:18 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Podłączyłem pin CS do GND ponieważ używałem pinu RST. Na stronie https://sklep.atnel.pl/pl/p/Wyswietlacz-OLED/100 w opisie wyświetlacza zaznaczono że jeśli nie korzysta się z wielu podłączonych wyświetlaczy nie trzeba podłączać pinu CS do procesora wystarczy do GND.
Nawet jak podpinam wszystkie piny OLED do procesora:

#define SCK (1<<5) //<---SCL //ustawinie pinów portów C działąjący na spi
#define MOSI (1<<4) //<----SDA
#define RST (1<<1) //<----RST
#define DC (1<<2) //

#define CS (1<<3)

i tak wyswietlacz nie reaguje. Może miałby ktoś jakąś prostą bibliotekę do tego wyswietlacza dla atmegi328p tylko żeby przetstować OLED czy w ogóle działa ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 16:31 
Offline
Użytkownik

Dołączył(a): 22 sie 2013
Posty: 73
Pomógł: 7

Skoro masz wyświetlacz SPI to skąd wziąłeś piny SCL i SDA i po co to podciągasz do czegokolwiek. SCL i SDA to magistrala I2C.
Podłącz to tak:
Vcc i Gnd wiadomo :D
CLK -> PC7
MOSI -> PC6
CS -> PC3
D/C -> PC4
RESET -> PC5

W pliku SSD1306.h poustawiaj sobie nazwy pinów tak jak ci podałem podłącz to tak do mikrokontrolera i zgodnie z poradnikami Mirka musi to działać. Reset ma być w inicjalizacji ssd1306_init i nie używaj w inicjacji pinu CS. Natomiast tylko pinu CS używaj w pozostałych funkcjach jak w poradniku musi działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 19:18 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

w dokumentacji atmega328p nie ma na schemacie wyjścia PC7, porty zaczynają się od PC6 do którego jest podpięty reset od programatora ATB-USBasp. Podłączyłem i uruchomiłem wyświetlacz w takiej konfiguracji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


ale po zaprogramowaniu żadnej reakcji ze strony wyświetlacza. Jeszcze będę próbował uruchomić ten wyświetlacz za pomocą procesora atmega328p, lecz jak to nie wyjdzie to zakupie atmega32 i wtedy krok po kroku jeszcze raz spróbuje uruchomić wyświetlacz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 19:44 
Offline
Użytkownik

Dołączył(a): 22 sie 2013
Posty: 73
Pomógł: 7

Nie sprawdziłem wcześniej atm328 jeśli Ci brakuje pinów to spróbuj np. Portów PB lub PD. Nie chce Ci dawać gotowca bo jaka w tym nauka. Ale spróbuj przeanalizować co robisz
Jak ci się tego nie uda dopalić to pomogę z moją 328 ale nie dziś.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 21:59 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Podłączyłem piny wyświetlacza do portów D, oglądnąłem ponownie poradnik Pana Mirka i znalazły się jeszcze z dwa błędy, które poprawiłem. Cóż, po tej poprawie dalej wyświetlacz nic nie pokazuje. Jakbym miał jakiś gotowy program, mógłbym sprawdzić czy w ogóle działa ten wyświetlacz działa, bo już sam nie wiem czy przypadkiem jakoś go nie zepsułem, jakimś nieprawidłowym podłączeniem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 10:02 
Offline
Użytkownik

Dołączył(a): 22 sie 2013
Posty: 73
Pomógł: 7

Podłącz do tych pinów co ci wyżej pisałem tylko do portu D. Na mojej m328 ten wsad działa
Jak do tego dodać plik hex????
Dobra już wiem ;)


Autor postu otrzymał pochwałę

Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 13:16 
Offline
Nowy

Dołączył(a): 10 wrz 2015
Posty: 14
Pomógł: 0

Dziękuje bardzo za pomoc, po wgraniu pliku HEX wyświetlacz zadziałał. Jeszcze raz będę próbował prześledzić swoją bibliotekęm bo gdzieś musi się kryć jeszcze jakiś błąd ;)



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO