Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

MCP41HV31 digitalni potenciometer

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mucek.g
Novinec


Pridružen/-a: Tor Feb 2014 21:25
Prispevkov: 6

PrispevekObjavljeno: Tor Mar 18, 2014 8:23 pm    Naslov sporočila: MCP41HV31 digitalni potenciometer Odgovori s citatom

Lep pozdrav!

Jure je na svojem blogu objavil članek o tem digitalnem potenciometru in navdušil tudi mene ... Spodaj koda za igranje, sam sem uporabil HW SPI, komentirana je tudi koda za SW SPI ...

Me pa zanima (Jure?), ali si poskušal tudi z direktnim vpisom vrednosti v sam register čipa? Sem se nekaj trudil, a brez uspeha. (če zadevo večem/manjšam, brez problema pridem do želene vrednosti, ne gre pa mi direktni vpis).

Lp, g

Koda:


Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1 Spiinit
'Config Spi = Soft , Din = Pinb.5 , Dout = Portc.2 , Clock = Portb.7 , Ss = None

Cs Alias Portb.4
Wlat Alias Portb.3
Shdn Alias Portb.2
Config Cs = Output
Config Wlat = Output
Config Shdn = Output
Cs = 1                                                      'non active state
Wlat = 1
Shdn = 1

Dim Incr_comm As Byte
Dim Decr_comm As Byte
Dim Read_comm As Byte
Dim Write_comm As Byte

'commands
Decr_comm = &B00000111                                      'increment command
Incr_comm = &B00001011                                      'decrement command
Read_comm = &B00001111                                      'read command
Write_comm = &B00000011                                     'write command

Dim Resistance As Byte : Resistance = 0

Dim Wiper As Word


'SPI test
Waitms 100
Spiinit

Waitms 100
'read data from MCP41HV31 to see how the resistance is set
Cs = 0
Spiout Read_comm , 1
Spiin Resistance , 1
Gosub Calculate
Cs = 1

'============================================

'Set_resistance


Main_resistor:
Do
   Print "Wiper:" ; Wiper ; "   "
   If T1 = 0 Then Gosub Up_sub
   If T2 = 0 Then Gosub Down_sub
   waitms 500
Loop



Calculate:
   Wiper = Resistance * 190
   Wiper = Wiper + 280
Return


'subroutines
'-------------------------------------------------------------
Up_sub:
   Set Led_close
   Waitms 50
   Cs = 0                                                   'active
   Waitms 100
   Incr Resistance
   Spiout Incr_comm , 1
   Spiout Read_comm , 1                                     'command to read set resistance

   Spiin Resistance , 1                                     'read set resistance
   Gosub Calculate
   Wlat = 0                                                 'set to write to SPI register
   Cs = 1
   Reset Led_close                                          'not active
Return

'-------------------------------------------------------------

Down_sub:
   Set Led_open
   Waitms 50
   Cs = 0
   Waitms 100
   Decr Resistance
   Spiout Decr_comm , 1
   Spiout Read_comm , 1                                     'command to read set resistance

   Spiin Resistance , 1                                     'read set resistance
   Gosub Calculate
   Wlat = 0                                                 'set to write to SPI register
   Cs = 1                                                   'not active
   Reset Led_open
Return

Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2058
Kraj: Ljubljana

PrispevekObjavljeno: Sre Mar 19, 2014 9:54 am    Naslov sporočila: Odgovori s citatom

Digitalni POT res lepo dela, Gregatu je manjkala ena subrutina, ki jo najdete v mojem blogu in se imenuje Test_sub.

V tej subrutini pišemo vrednost upornosti v potenciometer.

Lp
Jure
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mucek.g
Novinec


Pridružen/-a: Tor Feb 2014 21:25
Prispevkov: 6

PrispevekObjavljeno: Sre Mar 19, 2014 8:03 pm    Naslov sporočila: Odgovori s citatom

Dodatno je bil problem še, da mi pri uporabi HW SPI prejemanje ni delovalo (torej - lahko sem poslal ukaz, nisem pa mogel prejeti odgovora). Ko sem zadevo nastavil na SW SPI, je zadeva zaživela ... Zadeva je sigurno povezana s kupom nastavitev HW SPI, s čimer pa se žal nisem imel časa (in volje) ubadati, ko je zadeva zaživela Smile

Jure, hvala za pomoč!

Lp, g
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group