Pytania, kody i porady dotyczące nie tylko Bascom.
-
Henryk
- Posty: 357
- Rejestracja: 22 sty 2018, 17:20
Post
autor: Henryk » 14 gru 2025, 13:32
Witam po krótkiej przerwie .
Miało być łatwo i przyjemnie a jest kłopot z lcd oled . Wgrałem do procka prosty przykład z forum MCS zmieniając początkowo tylko procesor .
'-------------------------------------------------------------------------------
' SSD1306-I2C.BAS
' (c) MCS Electronics 1995-2015
' Sample to demo the 128x64 I2C OLED display
'
'-------------------------------------------------------------------------------
$regfile = "m8def.dat"
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal = 8000000
'Config Clockdiv = 1 ' make sure the chip runs at 8 MHz
Config Scl = Portc.5 ' used i2c pins
Config Sda = Portc.4
'Config Twi = 400000 ' i2c speed
I2cinit
'$lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
$lib "glcdSSD1306-I2C.lib" ' override the default lib with this special one
#if _build < 20784
Dim ___lcdrow As Byte , ___lcdcol As Byte ' dim these for older compiler versions
#endif
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
do
Cls
waitms 2000
Setfont Font8x8tt ' select font
Lcdat 1 , 1 , "BASCOM-AVR"
Lcdat 2 , 10 , "1995-2015"
Lcdat 8 , 5 , "MCS Electronics" , 1
Waitms 3000
Showpic 0 , 0 , Plaatje
waitms 5000
loop
End
$include "font8x8TT.font" ' this is a true type font with variable spacing
Plaatje:
$bgf "ks108.bgf" ' include the picture data
Okazało się że mój lcd nie ma ochoty na jakakolwiek aktywność jeśli biblioteka i2c_twi.lbx jest dołączona do kodu.
Nie potrafię określić czy trafił mi się bubel lcd czy mam do czynienia z jakimś konfliktem adresowym .
Mój lcd ma ustawiony adres 0x3C a przykłady jakie przeglądałem mają 0x78 .
Nie mam za bardzo pojęcia gdzie szukać błędu i jak to naprawić . Wyświetlacz startuje tylko po kilkukrotnym włączeniu i wyłączeniu zasilania i po kilkunastu sekundach się zawiesi , wyświetlacz bubel czy jakiś konflikt ? Henryk .
IMG_20251214_111320.jpg
IMG_20251214_123816.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
Henryk
- Posty: 357
- Rejestracja: 22 sty 2018, 17:20
Post
autor: Henryk » 16 gru 2025, 16:56
Poradziłem sobie z problemem .
Wyświetlacz zawieszał się z powodu podłączonych rezystorów podciągających na liniach scl i sda , były zbędne bo lcd na płytce ma własne .
Po i ch odłączeniu wyświetlacz zaczął działać i nie musiałem razy kilka włączać zasilanie , wystarczyło raz i nacisnąć reset .
Dalej nie dawało mi to spokoju i drążyłem dalej problem dlaczego niby mam naciskać reset ?
Problem był z I2cinit , wstawiłem dwa opóźnienia 50 ms i problem znikł , teraz wyświetlacz startuje tak jak powinien .
'-------------------------------------------------------------------------------
' SSD1306-I2C.BAS
' (c) MCS Electronics 1995-2015
' Sample to demo the 128x64 I2C OLED display
'
'-------------------------------------------------------------------------------
$regfile = "m8def.dat"
$hwstack = 32
$swstack = 32
$framesize = 32
$crystal = 8000000
Config Scl = Portc.5 ' used i2c pins
Config Sda = Portc.4
Config Twi = 400000
waitms 50
I2cinit ' i2c speed
waitms 50
$lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
$lib "glcdSSD1306-I2C.lib" ' override the default lib with this special one
Config Graphlcd = Custom , Cols = 128 , Rows = 64 , Lcdname = "SSD1306"
do
Cls
Waitms 2000
Setfont Font8x8tt ' select font
Lcdat 1 , 1 , "BASCOM-AVR"
Lcdat 2 , 10 , "1995-2015"
Lcdat 8 , 5 , "MCS Electronics" , 1
Waitms 3000
Showpic 0 , 0 , Plaatje
waitms 5000
loop
End
$include "font8x8TT.font" ' this is a true type font with variable spacing
Plaatje:
$bgf "ks108.bgf" ' include the picture data
Pozdrawiam Henryk .
-
niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 16 gru 2025, 17:04
Przepraszam, że czasem odpisze z opóźnieniem, ale kombinacja adresu email na gmail i powiadomienia to sie kłóci.
Faktycznie wszystkie moduły teraz maja właczone podciąganie rezystorami a wystarczyłoby raz i jak masz moduł który ma też współpracować z prockiem 3V3 to one maja 3K3 a nie 4K7 i przy 5V to juz wiecej jak jeden robi problem dla procka który z siebie moze wydać 20mA na pin i 100mA na port.
Wystarczy moduł OLED z rezystorami 3K3 i RTC (typowe połaczenie) i juz sie prosimy o kłopoty.
-
Henryk
- Posty: 357
- Rejestracja: 22 sty 2018, 17:20
Post
autor: Henryk » 16 gru 2025, 17:15
Witam Panie Bartku .
Jeszcze jeden problem chodzi mi po głowie , dlaczego wyświetlacz wyświetla wysyłane teksty skoro ma ustawiony adres ?
Normalnie to powinienem poprzedzić co chcę wysłać jego adresem .
-
niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 16 gru 2025, 18:40
Bibloteka domyslna ma ustawiony adres na stałe (coś okoł &H78 albo cos około tego).
Jest alternatywna biblioteka stworzona przez uzytkownika forum MCS o nicku O-Family i tam masz zdefiniować jeden bajt dla adresu i potem zmieniać jego wartość jak chcesz cos wysłac do innego wyświetlacza.