IC (Sanyo LC75854E) használata (autórádió előlap)

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Suzuki rádió előlap

Hozzászólás Szerző: kaszaspr »

Sziasztok!

Egy autórádió előlapját szeretném használni.
A kijelző meghajtása megy is, de a benne lévő IC (Sanyo LC75854E)kezeli a gombokat is, és azt sehogy se sikerül kiolvasnom. Bármit nyomok csak 1-esek jönnek.
Valaki tudna segíteni, hogy milyen metódussal kell lekérdezni a gombokat? Nekem angol tudásom sajnos elég korlátozott és itt elakadtam.
Gondoltam rá, hogy hagyom a fenébe és közvetlen használom fel a gombokat, de most kicsit attól is megriadtam, sok portláb, kesze kusza kapcsolás... :cry:
A kapcsolás a KI1-4 és KS2-6-ig használja a gombokat
S3-S40-ig LCD
P1 háttérvilágítás

Beszúrok egyet az egyszerübbek közül amivel próbálkoztam

Kód: Egész kijelölése

$crystal = 12000000                                         'Sebesseg

$regfile = "M16def.dat"                                     'Chip
$baud = 57600
'$sim

Config Spi = Soft , Din = Pina.2 , Dout = Porta.3 , Ss = None , Clock = Porta.0
'Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 1
Spiinit

'Config Pina.0 = Output
'Config Pina.1 = Output
'Config Pina.2 = Input
'Config Pina.3 = Output
Clk Alias Porta.0
Ce Alias Porta.1
Din Alias Pina.2
Dout Alias Porta.3

Dim Radio(32) As Byte At &H60                              
Dim Adat(28) As Byte At &H80                                

Dim Lcd_cim As Byte
Dim Gomb_cim As Byte
Dim A As Byte                                               'Általános változó
Dim Be_gomb(4) As Byte

Declare Sub Kuld_lcd
Declare Sub Fogad_gomb

Lcd_cim = &H42
Gomb_cim = &B11000010   'ez &H43 tükrözve (lehetne &HC2 is)
Adat(7) = &B11010000      'config és DD bitek 1.sor
Adat(14) = &B00000001    'DD bitek 2.sor
Adat(21) = &B00000010    'DD bitek 3.sor
Adat(28) = &B00000011    'DD bitek 4.sor

Print "Start..."
Do
Input "Melyik pin? " , A
If A = 1 Then
Toggle Adat(1).7
Call Kuld_lcd
Elseif A = 200 Then
Call Fogad_gomb
Else
End If
Loop

Sub Kuld_lcd
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(1) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(8) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(15) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(22) , 7
   Reset Ce
End Sub

Sub Fogad_gomb
   Reset Din
   Waitms 10
   Spiout Gomb_cim , 1
   Set Ce
   Ddra = &B11111011
   Set Din
   Spiin Be_gomb(1) , 4
   Print Be_gomb(1)
   Print Be_gomb(2)
   Print Be_gomb(3)
   Print Be_gomb(4)
   Reset Ce
End Sub
Ezzel csak egy szegmenst lehet ki be kapcsolni(vagyis itt a háttér világítást), és 200-al a gombokat próbálnám lekérdezni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Set Din

Din alias pinx.x
nem jó!

Ahogy olvasom az adatlapot a K0/K1 adattal valasztod ki, hogy mit olvasol be. (8. oldal)
ezt nem latom a programodban, h hol allitod be...
->Megvan!


A gombfogadnal a DDRA-t miert allitod?
A DO-t is nezni kell a megjegyzese szerint.
11. oldal.
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Robert írta:
A gombfogadnal a DDRA-t miert allitod?
DDRA-val a Config Pinx.x = input/output-ot akartam kiváltani, mert itt valaki szerint nem helyes, meg a help szerint sem. Vagy csak nem publikus mert a szimuláció szerint beállítja a DDR biteket.
Robert írta:A DO-t is nezni kell a megjegyzese szerint.
11. oldal.
A DO nálam a programban a Din, azon olvasnám be az adatot. Vagy mire gondolsz?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A ki/bemenet állítása a onfig portx.y=input/output-tal szabványos. A Bascom az 1.11.7.8 óta megérti a Pinx.y-t is. De a programban bárhol nyugodtan átconfig-olhatod a lábat kimenetről bemenetre v. fordítva.

A DInra valamir ír, hogyha az elején H érték, akkor neki nem jó valami....
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Az meg nálam alapból H
A Bootloaderem ot villogtatja a ledet és magason marad.
kitakarítom
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Robert írta:A DInra valamir ír, hogyha az elején H érték, akkor neki nem jó valami....
Akkor addig állítsam be kimenetként és húzzam le L-re amíg nem kezdem fogadni róla az adatot?

Kód: Egész kijelölése

$crystal = 12000000                                         'Sebesseg

$regfile = "M16def.dat"                                     'Chip
$baud = 57600
'$sim

Config Spi = Soft , Din = Pina.2 , Dout = Porta.3 , Ss = None , Clock = Porta.0
'Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 128 , Noss = 1
Spiinit

Config Pina.2 = Output
Reset Porta.2

'Config Pina.0 = Output
'Config Pina.1 = Output
'Config Pina.2 = Input
'Config Pina.3 = Output
Clk Alias Porta.0
Ce Alias Porta.1
Din Alias Porta.2
Dout Alias Porta.3

Dim Radio(32) As Byte At &H60                               'Overlay
Dim Adat(28) As Byte At &H80                                'Overlay

Dim Lcd_cim As Byte
Dim Gomb_cim As Byte
Dim A As Byte                                               'Általános változó
Dim Be_gomb(4) As Byte

Declare Sub Kuld_lcd
Declare Sub Fogad_gomb

Lcd_cim = &H42
Gomb_cim = &B11000010
Adat(7) = &B11010000
Adat(14) = &B00000001
Adat(21) = &B00000010
Adat(28) = &B00000011

Print "Start..."
Do
Input "Melyik pin? " , A
If A = 1 Then
Toggle Adat(1).7
Call Kuld_lcd
Elseif A = 200 Then
Call Fogad_gomb
Else
End If
Loop

Sub Kuld_lcd
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(1) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(8) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(15) , 7
   Reset Ce
   Spiout Lcd_cim , 1
   Set Ce
   Spiout Adat(22) , 7
   Reset Ce

End Sub

Sub Fogad_gomb
   Waitms 10
   Spiout Gomb_cim , 1
   Set Ce
Config Pina.2 = Input
   Spiin Be_gomb(1) , 4
   Print Be_gomb(1)
   Print Be_gomb(2)
   Print Be_gomb(3)
   Print Be_gomb(4)
   Reset Ce
Config Pina.2 = Output
Reset Porta.2

End Sub
Igy se jó, csak
255
255
255
255
olvas be mint eddig
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Köszönöm szépen a segítséget, sikerült lekérdezni a gombokat.
Nem szoftveres probléma volt, a bejövő pint a rajta lévő led miatt nem tudta lehúzni alacsony szintre az IC(vékony ~20cm vezetékkel összekötve). Akkor mértem meg a pint mikor az alábbi részletekkel egészítettem ki a kódomat

Kód: Egész kijelölése

Sub Fogad_gomb
If Pina.2 = 0 Then
   Print "gomb lekérdezés:"
   Spiout Gomb_cim , 1
   Waitms 40
   Set Ce
   Spiin Be_gomb(1) , 4
   Print Be_gomb(1)
   Print Be_gomb(2)
   Print Be_gomb(3)
   Print Be_gomb(4)
   Reset Ce
Else
Print "nincs gomb lenyomva"
End If
End Sub
LEDen láttam hogy egy gomb nyomásakor lehúzza a DO-t(Din), de be már 1-et olvasott.

Innen már tudok tovább építkezni, de majd még biztos lesznek kérdéseim.
pl. Miért nem tudtam HW SPI buszon adatot küldeni az IC-nek?
- SW SPI ment
- Shiftout ment
- Láb billegtetéssel ment
Lehet hogy HW SPI vár valamit a MISO lábon, ez meg nem ad neki mert ez ugye CBB protokol?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

HW SPI túl sok féleképpen konfigurálható. Lehet hogy pl. nem Mode0-ba rakod....
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Robert írta:HW SPI túl sok féleképpen konfigurálható. Lehet hogy pl. nem Mode0-ba rakod....
Azt látom hogy CPHA = 0 and CPOL = 0 (Mode 0) és az kell nekem, de hol kell ezt megadni?
A Config SPI paramétereiben nem látom.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

http://notes-application.abcelectroniqu ... -19916.pdf

A hardveres spi esetén:
POLARITY , de a CPH-t passzolom....

De ha megy SW-s SPIvel, akkor ne küzdj - szerintem - a HW-es SPI-vel...
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Csak azért szerettem volna használni mert egyszerre szeretnék fogadni egy másik autórádiótól is adatot, ahoz meg jól jönne. (másik autórádiót akarok a suzuki előlapja mögé lenne a vég cél)
SPCR regisztert nem lehet valahogy közvetlen birizgálni?
De a gépköny szerint a CPOL, CPHA Initial Value 0.
Lehet hogy más volt akkor a baj, majd még újból próbálkozok.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Tipp:

Mindkettot SPI-sen kezeled, de ugyis a CS (ChipSelect) labbal valasztod ki, hogy melyikkel akarsz kommunikalni....
Innen meg szerintem mindegy:)
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

Nem jó mert a rádió felöl slave-ként lopom az adatot, az előlapnak meg master-ként küldök és fogadok.

Más. A másik rádió a gombokat elenállás hálóval kérdezi le (nem tudom mi a hivatalos neve). Gondolom valami ADC lábán dolgozza fel a jelet. Elképzelhető, hogy én ezt a jelet PWM lábon le tudom neki emulálni, vagy meghülyülne mikor fel akarja dolgozni a mintavételezés miatt? Vagy lehet a PWM jelet valahogy simítani?
Bár most nézem a demoboard-omon is egy LM358 op-amp van a PWM lábán, ami a kontrasztot állítja.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

pwm-et egy RC taggal simíthatod.....
Vagy meg egyszerűbb - igaz plusz IC: Digitális potméter. SPIn beadod, hogy hol álljon a csúszka:).
Avatar
kaszaspr
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. március 9. hétfő, 6:00

Hozzászólás Szerző: kaszaspr »

A Fuse biteknél a 0:SPI enabled kizárja a HW SPI használatát?
Válasz küldése