"Knif" dla MCP4726 i innych I2C
: 28 kwie 2017, 15:11
Nie wiem czy to kogoś zainteresuje, ale projektując pewne urządzenie wybrałem układ firmy Microchip MCP4726.
Jest to DAC czyli Digital to Analog Converter. Sterowany jest szyną I2C.
Układ ten ma obudowę SOT23-6 czyli sześć nóżek i nie bardzo mogli zaimplementować wybór adresu układu poprzez konfigurację nóżek.
Wpadli wiec na pomysł, że będzie można kupić układ z jednym z ośmiu adresów.
Co ciekawe ludzie, i ja do nich należę, najbardziej polubili ten pierwszy z brzegu adres A0.
Niestety koniunkturę wyczuli chyba handlarze i na znanym portalu aukcyjnym układy z tym adresem są czasem po 7zł - 9zł
Tymczasem każdy inny adres w TME można kupić za 3,5zł
Powstała wiec idea by:
-przy pierwszym włączeniu urządzenia sprawdzić jaki adres ma zamontowany DAC i potem go używać
Kod wygląda jak poniżej a przedstawiam go by każdy poszerzył swoje horyzonty myślowe i szukał lepszych sposobów na obejście zwykłych codziennych zmagań z rzeczywistością
Jest to DAC czyli Digital to Analog Converter. Sterowany jest szyną I2C.
Układ ten ma obudowę SOT23-6 czyli sześć nóżek i nie bardzo mogli zaimplementować wybór adresu układu poprzez konfigurację nóżek.
Wpadli wiec na pomysł, że będzie można kupić układ z jednym z ośmiu adresów.
Co ciekawe ludzie, i ja do nich należę, najbardziej polubili ten pierwszy z brzegu adres A0.
Niestety koniunkturę wyczuli chyba handlarze i na znanym portalu aukcyjnym układy z tym adresem są czasem po 7zł - 9zł
Tymczasem każdy inny adres w TME można kupić za 3,5zł
Powstała wiec idea by:
-przy pierwszym włączeniu urządzenia sprawdzić jaki adres ma zamontowany DAC i potem go używać
Kod wygląda jak poniżej a przedstawiam go by każdy poszerzył swoje horyzonty myślowe i szukał lepszych sposobów na obejście zwykłych codziennych zmagań z rzeczywistością
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '*****************************************************************
- '* CONFIG FOR MCP4726 DAC *
- '*****************************************************************
- Dim Dac_val As Word
- Dim Dac_bytes(2) As Byte At Dac_val Overlay
- Dim Dac_learned As Byte , Dac_learned_ee As Eram Byte
- Dim Dac_address As Byte , Dac_address_ee As Eram Byte
- Dac_learned = Dac_learned_ee
- If Dac_learned <> 0 Then
- For Dac_address = 192 To 206 Step 2
- I2cstart
- I2cwbyte Dac_address
- If Err = 0 Then
- Dac_address_ee = Dac_address 'zapamietaj adres
- Dac_learned_ee = 0 'zapamietaj ze wyuczono
- Exit For
- End If
- Next
- End If
- Dac_address = Dac_address_ee 'normalny odczyt adresu z pamieci