Rodzina procesorów bogatszych w wiele nowych rozwiązań i dlatego warto po nie sięgnąć.
-
krolikbest
- Posty: 23
- Rejestracja: 10 maja 2022, 13:25
Post
autor: krolikbest » 16 maja 2022, 14:05
Witam,
próbuję skomunikować xmega32e5 z lcd (sterownik hd44780) z zainstalowanym konwerterem i2c pcf8574. LCD pod Uno działa. Pod xmegę jakoś mi to nie teges.. Napisałem prosty skaner i2c czy w ogóle mi wykrywa lcd-ka. I wykrywa. Kod skanera:
$regfile = "xm32e5def.dat"
$crystal = 32000000 '32MHz
$hwstack = 64
$swstack = 40
$framesize = 40
Config Osc = Enabled , 32mhzosc = Enabled 'We use internal 32MHz
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 'Internal 32MHz, no prescaler
dim twi_start as byte
Dim Adrs As Word
Dim Row As Word
Config Com1 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Open "COM1:" For Binary As #1
Config Scl = Portc.1
Config Sda = Portc.0
Open "twic" For Binary As #2
Config I2cdelay = 10
Config Twic=100000
I2Cinit #2
For Adrs = 0 To 254 Step 2
I2cstart #2
I2cwbyte Adrs, #2
If Err = 0 Then '0 device / 1 not device
Print #1, "Found addr " ; Hex(Adrs) ; " " ; Adrs
End If
I2cstop #2
Next Adrs
Print #1,"-----"
End
Program do lcd tak wygląda:
$regfile = "xm32e5def.dat"
$crystal = 32000000 '32MHz
$hwstack = 80
$swstack = 60
$framesize = 60
$lib "bl_Lcd_i2c.lib"
Config Osc =enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
dim twi_start as byte
Dim _lcd_e As Byte
Dim Backlight As Byte
Config Scl = Portc.1
Config Sda = Portc.0
Open "twic" For Binary As #2
Config I2cdelay = 10
Config Twic=100000
I2Cinit #2
Const Pcf_d4 = 4
Const Pcf_d5 = 5
Const Pcf_d6 = 6
Const Pcf_d7 = 7
Const Pcf_rs = 0
Const Pcf_rw = 1
Const Pcf_e1 = 2
Const Pcf8574_lcd = &H4E 'Defines the address of the I/O expander for LCD
Backlight_on Alias &H08
Backlight_off Alias &H00
Backlight = Backlight_on
_lcd_e = 128
cls
Locate 1 , 1
Lcd "Dystans"
end
Sprzętowo sda, scl rezystorami podciągnięte pod 3v3. Skaner wykrywa adres &H4E, ale dołączony program do wyświetlenia czegokolwiek już nic nie pokazuje.. Może znowu coś przeoczyłem?
Pozdrawiam,
Marcin
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 16 maja 2022, 14:25
Lepiej użyj tej biblioteki ->
https://www.mcselec.com/index2.php?opti ... ic&t=14773
Jest już dołączana do Bascom "lcd_i2c_PCF8574.LIB" więc powinieneś ją mieć. Link jest do przykładu użycia. Można mieć więcej LCD na raz.
Nie pamiętam czy czasem nie jest potrzebne "init_lcd" bo cls tam automatycznie chyba nie inicjuje.
Zawsze też potrzebne jest "Config Lcd = X x Y bo sa różne adresowania linii.
-
krolikbest
- Posty: 23
- Rejestracja: 10 maja 2022, 13:25
Post
autor: krolikbest » 16 maja 2022, 14:27
Dzięki za podpowiedź. Jutro powalczę.
Pozdrawiam,
Marcin
-
krolikbest
- Posty: 23
- Rejestracja: 10 maja 2022, 13:25
Post
autor: krolikbest » 17 maja 2022, 10:52
Wygląda na to, że korzystając z tej biblioteki przy obsłudze xmega nie skompiluje programu. Załaczam kod, może sie komus uda.
$regfile = "xm32e5def.dat"
$crystal = 32000000 '32MHz
$hwstack = 80
$swstack = 60
$framesize = 60
$lib "lcd_i2c_PCF8574.Lib"
Config Osc =enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
dim twi_start as byte
Config Twic=100000
Config Scl = Portc.1
Config Sda = Portc.0
Open "twic" For Binary As #2
Config I2cdelay = 10
I2Cinit #2
Dim Pcf8574_lcd As Byte : Pcf8574_lcd = &H4E 'PCF8574 slave address. (&H40,&H42,&H44,&H46,&H48,&H4A,&H4C,&H4E)
Dim Backlight As Byte : Backlight = 1 'LCD backlight control. (0: off, 1: on)
Config Lcd = 16x2 'Set the LCD to 20 characters and 4 lines
Initlcd
Locate 1 , 1
Lcd "Dystans"
end
Z poważaniem,
Marcin
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 17 maja 2022, 11:16
Coś musieli popsuć w 2085 bo kompiluje się i działa pod 2084.
Nie wiem czy masz poprzednie wersje. U siebie instaluję je w osobnych folderach i zawsze mogę testować na poprzednich.
To trochę dziwne bo pluje się o Lbyte i Hbyte albo o które od wersji 2075 są wewnętrznymi zmiennymi Bascom`a, albo o TWI_ADDR co opisują w linkowanym przeze mnie temacie na MCS.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
krolikbest
- Posty: 23
- Rejestracja: 10 maja 2022, 13:25
Post
autor: krolikbest » 17 maja 2022, 11:39
No właśnie zonk jest bo mam wersje 2085...
I jak tu downgrade zrobić, albo napisać do suportu?
Z poważaniem,
Marcin
-------------
Mam jeszcze 2082, zainstalowałem, też błędy: TWI_CH, HByte, LByte
Ostatnio zmieniony 17 maja 2022, 11:43 przez
krolikbest, łącznie zmieniany 1 raz.
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 17 maja 2022, 11:42
Już napisałem
Dopisałem nawet te gwiazdki w bibliotece, ale to nic nie wniosło.
Mogę Tobie podlinkować wersję 2084. Przy instalacji najlepiej dodać sobie numer wersji i zawsze tak robię. Te pokazane to mam na Win10 a na starym Win7 to mam od 2085 wszystkie ahahahaha
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
krolikbest
- Posty: 23
- Rejestracja: 10 maja 2022, 13:25
Post
autor: krolikbest » 17 maja 2022, 11:46
Jak możesz udostępnić 2084, to byłoby fajnie.
Pozdrawiam,
Marcin
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 17 maja 2022, 11:49
Sprawdź pocztę
Już go miałem na GoogleDrive bo komuś podsyłałem. W pierwszej wersji 2085 był problem z zapisem stringów do eeprom. Działało w 2084 a w 2085 nie. To juz poprawiono i obecnie aktualna jest wersja 2085.005
-
niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 17 maja 2022, 11:57
Jak tak zerknąłem do tej biblioteki w 2084 to ona chyba nie miała w ogóle obsługi Xmeg więc to dalej może nie działać.