Strona 1 z 1
MPC4725
: 05 lip 2024, 17:37
autor: grzeniu 73
Siema! Krucze kto pomoże.
If Value < 4095 Then Incr Value
' Wysłanie danych do MCP4725
I2cstart
I2cwbyte 196 ' adres ukladu
I2cwbyte &H40 ' ustawienie normalnego trybu
I2cwbyte Low(value)
I2cwbyte High(value)
I2cstop
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.
Dim Value As Word
Dim Highbyte As Word
Dim Lowbyte As Word
Dim Temp As Byte
If Value < 4095 Then Incr Value
Highbyte = Value / 16
Temp = Value And &HF
Lowbyte = Temp * 16
' ' Wysłanie danych do MCP4725
I2cstart
I2cwbyte &HC4 ' adres ukladu
I2cwbyte &H40 ' ustawienie normalnego trybu
I2cwbyte Highbyte
I2cwbyte Lowbyte
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.
'DAC at
'&B11000000 192 (&HC0)
'&B11000010 194 (&HC2)
'&B11000100 196 (&HC4)
'&B11000110 198 (&HC6)
'&B11001000 200 (&HC8)
'&B11001010 202 (&HCA)
'&B11001100 204 (&HCC)
'&B11001110 206 (&HCE)
Dim Zmienna As Word
Dim Dac_bytes(2) As Byte At Zmienna Overlay
Sub Set_dac
I2cstart
If Err = 0 Then
I2cwbyte Dac_address 'DAC I2C Address
If Err = 0 Then
I2cwbyte Dac_bytes(2)
I2cwbyte Dac_bytes(1)
End If
End If
I2cstop
End Sub