Potencjometr cyforwy MCP4011 sterowanie

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
Michał6201
Posty: 127
Rejestracja: 03 paź 2015, 20:07

Potencjometr cyforwy MCP4011 sterowanie

Post autor: Michał6201 » 20 sie 2023, 12:42

Cześć
Mam potencjometr MCP4011 i jest on sterowany dwoma pinami z mikrokontrolera na zasadzie Up i Down. Ale nigdzie nie znalazłem w internecie fragmentu kodu odpowiedzialnego za wysterowanie tego potencjometru.
Robił ktoś może z Was obsługę tego potencjometru w Bascom?
Chciałbym wykorzystać taki potencjometr do regulacji jasności podświetlenia lcd.
Z tego co przeczytałem w datascheet tego scalaka, to trzeba wysyłać do niego impulsy i chyba one muszą być oparte na timerach, coś ala PWM?

W internecie znalazłem obsługę w Bascom DS1267, ale to sporej wielkości kostka i nie za bardzo mi pasuje. Czy podobnie można wysterować ten MCP4011?
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Potencjometr cyforwy MCP4011 sterowanie

Post autor: niveasoft » 20 sie 2023, 14:58

Tam to jest proste jak swiński ogon. Wysyła się impulsy a że maksymalnie jest ich 64 to długo nie potrwa i chyba to mozna zrobić na zwykłych opóźnieniach.
To czy zmniejsza lub zwiększa rezystancję zalezy od tego jaki stan ma pin UD przed ustawieniem pinu CS w stan niski.
Piszesz sobie dwa suby i gotowe.
Czytałem tę notę trzy minuty, ale chyba powinno działać ;)
  1. CS Alias PORTB.0 : Config CS  = Output : Set CS
  2. UD Alias PORTB.1 : Config UD = Output
  3.  
  4. Sub Zwieksz(byval Ile_krokow As Byte)
  5.    Set UD
  6.    Waitus 50
  7.    Reset CS
  8.      For N = 1 to Ile_krokow
  9.        Waitus 50
  10.        Toggle UD
  11.        Waitus 50
  12.        Toggle UD
  13.     Next
  14.    Waitus 50
  15.    Set CS
  16. End Sub
  17.  
  18. Sub Zmniejsz(byval Ile_krokow As Byte)
  19.    ReSet UD
  20.    Waitus 50
  21.    Reset CS
  22.      For N = 1 to Ile_krokow
  23.        Waitus 50
  24.        Toggle UD
  25.        Waitus 50
  26.        Toggle UD
  27.     Next
  28.    Waitus 50
  29.    Set CS
  30. End Sub
  31.  
Awatar użytkownika
Michał6201
Posty: 127
Rejestracja: 03 paź 2015, 20:07

Re: Potencjometr cyforwy MCP4011 sterowanie

Post autor: Michał6201 » 23 sie 2023, 20:23

Dziękuję Ci bardzo
Po powrocie do domu będę testował :)
Awatar użytkownika
Michał6201
Posty: 127
Rejestracja: 03 paź 2015, 20:07

Re: Potencjometr cyforwy MCP4011 sterowanie

Post autor: Michał6201 » 09 mar 2024, 13:44

Niestety nie działa ten program do sterowania potencjometrem MCP4011
  1.  $regfile = "m1284pdef.dat"
  2.  
  3. $crystal = 8000000
  4. $hwstack = 128
  5. $swstack = 128
  6. $framesize = 128
  7.  
  8. Declare Sub Zwieksz()
  9. Declare Sub Zmniejsz()
  10. Dim Ile_krokow As Byte
  11. Dim N As Byte
  12.  
  13. CS Alias PORTB.0 : Config CS  = Output : Set CS
  14.     UD Alias PORTB.1 : Config UD = Output
  15.  
  16.  
  17.  Config POrTA.1 = Input : PORTA.1 = 1 : plus Alias PINA.1 ' switch PLUS
  18. Config POrTA.0 = Input : PORTA.0 = 1 : minus Alias PINA.0 ' switch MINUS
  19.  
  20. Do
  21.  
  22. If plus = 0 Then Zwieksz
  23. If minus = 0 Then Zmniejsz
  24.  
  25. Loop
  26. End
  27.  
  28.  
  29.   Sub Zwieksz(byval Ile_krokow As Byte)
  30.        Set UD
  31.        Waitus 50
  32.        Reset CS
  33.          For N = 1 to Ile_krokow
  34.            Waitus 50
  35.            Toggle UD
  36.            Waitus 50
  37.            Toggle UD
  38.         Next
  39.        Waitus 50
  40.        Set CS
  41.     End Sub
  42.  
  43.     Sub Zmniejsz(byval Ile_krokow As Byte)
  44.        ReSet UD
  45.        Waitus 50
  46.        Reset CS
  47.          For N = 1 to Ile_krokow
  48.            Waitus 50
  49.            Toggle UD
  50.            Waitus 50
  51.            Toggle UD
  52.         Next
  53.        Waitus 50
  54.        Set CS
  55.     End Sub
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Potencjometr cyforwy MCP4011 sterowanie

Post autor: niveasoft » 10 mar 2024, 9:07

Te suby były napisane tak że trzeba podac ile kroków ma się zmienić.
Jak nie podasz ilosci krokow to pewnie jest to zero i nic sie nie zmieni.
Mozna przepisac suby żeby były po jednym kroku ale te poprzednie powinny byc uzyte conajmniej tak:
  1.     $regfile = "m1284pdef.dat"
  2.  
  3.     $crystal = 8000000
  4.     $hwstack = 128
  5.     $swstack = 128
  6.     $framesize = 128
  7.  
  8.     Config Submode = New
  9.  
  10.      Sub Zwieksz(byval Ile_krokow As Byte)
  11.         Set UD
  12.         Waitus 50
  13.         Reset CS
  14.           For N = 1 To Ile_krokow
  15.             Waitus 50
  16.             Toggle UD
  17.             Waitus 50
  18.             Toggle UD
  19.          Next
  20.         Waitus 50
  21.         Set CS
  22.      End Sub
  23.  
  24.      Sub Zmniejsz(byval Ile_krokow As Byte)
  25.         ReSet UD
  26.         Waitus 50
  27.         Reset CS
  28.           For N = 1 to Ile_krokow
  29.             Waitus 50
  30.             Toggle UD
  31.             Waitus 50
  32.             Toggle UD
  33.          Next
  34.         Waitus 50
  35.         Set CS
  36.      End Sub
  37.  
  38.  
  39.     Dim Ile_krokow As Byte
  40.     Dim N As Byte
  41.  
  42.     CS Alias PORTB.0 : Config CS  = Output : Set CS
  43.         UD Alias PORTB.1 : Config UD = Output
  44.  
  45.  
  46.      Config POrTA.1 = Input : PORTA.1 = 1 : plus Alias PINA.1 ' switch PLUS
  47.     Config POrTA.0 = Input : PORTA.0 = 1 : minus Alias PINA.0 ' switch MINUS
  48.  
  49.     Do
  50.  
  51.      If Plus = 0 Then Call Zwieksz(2)
  52.      If Minus = 0 Then Call Zmniejsz(2)
  53.  
  54.     Loop
  55.     End
ODPOWIEDZ