LTC2602 DAC programozása
LTC2602 DAC programozása
Szervusztok!
Soha nem kezeltem DAC-t és belefutottam ezzel kapcsolatosan egy problémába.
MCU: ATMEGA32
DAC IC: LTC2602
CRYSTAL: 11059200
DAC Referencia fesz: 3.3V
Az alábbi módon próbálom kezelni SPI-ban, de egyszerűen nem hajlandó végrehajtani semmit.
A "portb.4" -n van egy INCLINOMETER. Ő megfelelően működik.
Kód ide vonatkozó része:
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Config Portb.4 = Output ' PORTB.4 SPI Control pin
Spiinit
Dim Address_high As Byte , Address_low As Byte , Address As Word
Dim Command_address As Byte
Do
Address = Address + 1000 'növelem DAC kimeneti fesz-t.
Address = 1000
Address_low = Low(address)
Address_high = High(address)
Reset Portc.5
Command_address = &B00011111 'Write to all DAC Register "A" and "B" outputs
Spiout Command_address , 1
Spiout Address_high , 1
Spiout Address_low , 1
Set Portc.5
Waitms 50
Toggle Status_led
Loop
'------------------------------------------------
Azért nem raktam be a teljes kódot, mert sajnos köt a titoktartási szerződés....
megértéseteket kérem ezzel kapcsolatban.
Tudnátok benne segíteni hogy mit szúrok el? valamit nagyon benézek szerintem...
Előre is KÖSZÖNÖM!
Soha nem kezeltem DAC-t és belefutottam ezzel kapcsolatosan egy problémába.
MCU: ATMEGA32
DAC IC: LTC2602
CRYSTAL: 11059200
DAC Referencia fesz: 3.3V
Az alábbi módon próbálom kezelni SPI-ban, de egyszerűen nem hajlandó végrehajtani semmit.
A "portb.4" -n van egy INCLINOMETER. Ő megfelelően működik.
Kód ide vonatkozó része:
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Config Portb.4 = Output ' PORTB.4 SPI Control pin
Spiinit
Dim Address_high As Byte , Address_low As Byte , Address As Word
Dim Command_address As Byte
Do
Address = Address + 1000 'növelem DAC kimeneti fesz-t.
Address = 1000
Address_low = Low(address)
Address_high = High(address)
Reset Portc.5
Command_address = &B00011111 'Write to all DAC Register "A" and "B" outputs
Spiout Command_address , 1
Spiout Address_high , 1
Spiout Address_low , 1
Set Portc.5
Waitms 50
Toggle Status_led
Loop
'------------------------------------------------
Azért nem raktam be a teljes kódot, mert sajnos köt a titoktartási szerződés....
megértéseteket kérem ezzel kapcsolatban.
Tudnátok benne segíteni hogy mit szúrok el? valamit nagyon benézek szerintem...
Előre is KÖSZÖNÖM!
Re: LTC2602 DAC programozása
Futtatható állapotban, de sajnos így sem működik.
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 100
$swstack = 100
$framesize = 100
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Config Portc.5 = Output ' PORTB.4 SPI Control pin
Spiinit
Dim Address_high As Byte , Address_low As Byte , Address As Word
Dim Command_address As Byte
'Sample:
'Address = 3500
'Address_low = Low(address)
'Address_high = High(address)
'__________________________________STATUS LED___________________________________
Status_led Alias Portc.3 : Config Status_led = Output 'Status led
Set Status_led
Wait 1
Reset Status_led
Waitms 500
Do
Address = Address + 1000
Address = 1000
Address_low = Low(address)
Address_high = High(address)
Reset Portc.5
Command_address = &B00011111 'Write to all DAC Register
Spiout Command_address , 1
Spiout Address_high , 1
Spiout Address_low , 1
Set Portc.5
Waitms 50
Toggle Status_led
Loop
End
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 100
$swstack = 100
$framesize = 100
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Config Portc.5 = Output ' PORTB.4 SPI Control pin
Spiinit
Dim Address_high As Byte , Address_low As Byte , Address As Word
Dim Command_address As Byte
'Sample:
'Address = 3500
'Address_low = Low(address)
'Address_high = High(address)
'__________________________________STATUS LED___________________________________
Status_led Alias Portc.3 : Config Status_led = Output 'Status led
Set Status_led
Wait 1
Reset Status_led
Waitms 500
Do
Address = Address + 1000
Address = 1000
Address_low = Low(address)
Address_high = High(address)
Reset Portc.5
Command_address = &B00011111 'Write to all DAC Register
Spiout Command_address , 1
Spiout Address_high , 1
Spiout Address_low , 1
Set Portc.5
Waitms 50
Toggle Status_led
Loop
End
Re: LTC2602 DAC programozása
Kód: Egész kijelölése
Config Portc.5 = Output ' PORTB.4 SPI Control pin
http://www.tavir.hu - a gazda
Re: LTC2602 DAC programozása
Szia!
Portb.4 az INCLINOMETER
PortC.5 pedig az LTC2602
Portb.4 az INCLINOMETER
PortC.5 pedig az LTC2602
Re: LTC2602 DAC programozása
A fenti kódban csak az LTC2602-t próbálom életre kelteni, de sajnos nem reagál...
Re: LTC2602 DAC programozása
Adatlap 6.oldal mutatja, hogy az alacsonyabb bit megy elöl!
Ezért a SPI beállítása: Data Order = Lsb
Ezért a SPI beállítása: Data Order = Lsb
Re: LTC2602 DAC programozása
Igen, már egészen belekavarodtam ahogy próbálkoztam mindennel. Átírtam a kódot erre és még mindig nem működött.....
EZT ÍRTAM HOZZÁ VÉGÜL:
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 50
$swstack = 50
$framesize = 50
Dim Value As Word
Dim VALUEl As Byte At VALUE Overlay
Dim VALUEh As Byte At VALUE + 1 Overlay
Dim Varia As Word
Dim Comd As Byte
Dim Ertek As Word
Config Pinb.5 = Input
Config Portb.4 = Output ' PORTB.4 SPI Control pin
Config Portc.5 = Output
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spiinit
'__________________________________STATUS LED___________________________________
Status_led Alias Portc.3 : Config Status_led = Output 'Status led
Set Status_led
Wait 1
Reset Status_led
Waitms 100
ERTEK = &B00011111_11111111
Do
'Comd = &B0010_0001 'ch 1
'Comd = &B0010_0000 'ch 2
Comd = &B0010_1111 'ch all
ERTEK = ERTEK - 1000
VALUE = Varia
Shift VALUE , Left , 2
Value = Value Or Ertek
Portc.5 = 0
Spiout Comd , 1
Spiout VALUEh , 1
Spiout Valuel , 1
Portc.5 = 1
Toggle Status_led
Loop
End
Logikai analizátor, szkóp, stb. mindent ráakasztottam amit lehet.
És akkor arra jutottam hogy kicsrélem a vadonat új IC-t.
Utána rögtön életre kelt!
Szóval működik KÖSZÖNÖM az észrevételeket!
EZT ÍRTAM HOZZÁ VÉGÜL:
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 50
$swstack = 50
$framesize = 50
Dim Value As Word
Dim VALUEl As Byte At VALUE Overlay
Dim VALUEh As Byte At VALUE + 1 Overlay
Dim Varia As Word
Dim Comd As Byte
Dim Ertek As Word
Config Pinb.5 = Input
Config Portb.4 = Output ' PORTB.4 SPI Control pin
Config Portc.5 = Output
'_________________________________SPI CONFIG____________________________________
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spiinit
'__________________________________STATUS LED___________________________________
Status_led Alias Portc.3 : Config Status_led = Output 'Status led
Set Status_led
Wait 1
Reset Status_led
Waitms 100
ERTEK = &B00011111_11111111
Do
'Comd = &B0010_0001 'ch 1
'Comd = &B0010_0000 'ch 2
Comd = &B0010_1111 'ch all
ERTEK = ERTEK - 1000
VALUE = Varia
Shift VALUE , Left , 2
Value = Value Or Ertek
Portc.5 = 0
Spiout Comd , 1
Spiout VALUEh , 1
Spiout Valuel , 1
Portc.5 = 1
Toggle Status_led
Loop
End
Logikai analizátor, szkóp, stb. mindent ráakasztottam amit lehet.
És akkor arra jutottam hogy kicsrélem a vadonat új IC-t.
Utána rögtön életre kelt!
Szóval működik KÖSZÖNÖM az észrevételeket!
Re: LTC2602 DAC programozása
Légy szíves! Legközelebb program beszúráskor használd a fenti 'Code' gombot!
És a "KÓD: EGÉSZ KIJELÖLÉSE"-vel könyebben másolható!
Kód: Egész kijelölése
EZ olvashatóbb lessz! :
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 50
$swstack = 50
$framesize = 50
Re: LTC2602 DAC programozása
Jogos!
Elnézést kérek!
Elnézést kérek!