Strona 1 z 1

MPC4725

: 05 lip 2024, 17:37
autor: grzeniu 73
Siema! Krucze kto pomoże.
  1.            If Value < 4095 Then Incr Value
  2.                          ' Wysłanie danych do MCP4725
  3.           I2cstart
  4.           I2cwbyte 196                                      ' adres ukladu
  5.           I2cwbyte &H40                                      ' ustawienie normalnego trybu
  6.          I2cwbyte Low(value)
  7.          I2cwbyte High(value)
  8.          I2cstop
  9.                   Print Value
Co ja tu zle robie? Gdy wysyłam jak powyżej co jakieś 200 value napięcie jest 0 i znowu skokowo leci do 5 v i tak cały czas.
Gdy zamiennie LOW z HIGH miejscami to idzie równo do końca ale maksymalne napiecie to 312 mV

Re: MPC4725

: 05 lip 2024, 22:43
autor: niveasoft
Muszę zerknac do noty. Tak z wbudowanej ciekawości.

Re: MPC4725

: 05 lip 2024, 22:52
autor: grzeniu 73
Jutro podepnę pod arduino i sprawdzę z jakimś gotowcem. Ale wydaje mi sie, ze ja źle wysyłam komendy . 0 to 0v i 4095 to około 5v. Tylko te pośrednie nie działają tak jak powinny

Re: MPC4725

: 05 lip 2024, 22:57
autor: niveasoft
Ja go używam i działa jak złoto. Nie wiem co by tu mogło nie działać'

Re: MPC4725

: 06 lip 2024, 11:58
autor: grzeniu 73
Już wiem co nie działa :). Zle zdefiniowałem High i low byte. Zrobielm BYTE zamiast WORD i caly czas jakies glupoty mi wyliczal.
  1.        Dim Value As Word
  2.        Dim Highbyte As Word
  3.        Dim Lowbyte As Word
  4.        Dim Temp As Byte
  5.        
  6.        
  7.        
  8.           If Value < 4095 Then Incr Value
  9.  
  10.                            Highbyte = Value / 16
  11.                             Temp = Value And &HF          
  12.                             Lowbyte = Temp * 16
  13.  
  14.          '   ' Wysłanie danych do MCP4725
  15.                I2cstart
  16.                I2cwbyte &HC4                                ' adres ukladu
  17.                I2cwbyte &H40                                ' ustawienie normalnego trybu
  18.                    I2cwbyte Highbyte                          
  19.                    I2cwbyte Lowbyte                                                                              
  20.                 I2cstop
Teraz działa tak jak powinno. Zostawię tu , może ktoś będzie szukał, bo nie znalazłem wcześniej niczego w Bascom.

Re: MPC4725

: 07 lip 2024, 20:48
autor: niveasoft
Używam tego 14bit MPC4726 i o nim częściowo było tutaj -> viewtopic.php?f=16&t=64#p289

Faktycznie Bascom wyśle pewnie dwa bajty jak uzyjesz Word, ale ja tam klasycznie Overlay na Word i wysyłam dwa bajty.
  1. 'DAC at
  2. '&B11000000  192 (&HC0)
  3. '&B11000010  194 (&HC2)
  4. '&B11000100  196 (&HC4)
  5. '&B11000110  198 (&HC6)
  6. '&B11001000  200 (&HC8)
  7. '&B11001010  202 (&HCA)
  8. '&B11001100  204 (&HCC)
  9. '&B11001110  206 (&HCE)
  10.  
  11. Dim Zmienna As Word
  12. Dim Dac_bytes(2) As Byte At Zmienna Overlay
  13.  
  14. Sub Set_dac
  15.  
  16.    I2cstart
  17.    If Err = 0 Then
  18.     I2cwbyte Dac_address                                    'DAC I2C Address
  19.     If Err = 0 Then
  20.      I2cwbyte Dac_bytes(2)
  21.      I2cwbyte Dac_bytes(1)
  22.     End If
  23.    End If
  24.    I2cstop
  25.  
  26. End Sub