Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

как PIC18F452 адресира 3 DAC-a
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=9662
Страница 1 от 2

Автор:  cobreti [ Съб Яну 07, 2012 2:19 am ]
Заглавие:  как PIC18F452 адресира 3 DAC-a

Здравейте,
искам с PIC18F452 да управлявам 3 ЦАП-а (избрал съм TC1320), като използвам от процесора SCL (I2C clock) и SDA (I2C data).
Та въпроса ми е как ПИК-а да разпознава на кой ЦАП праща данните като имам само 1 clock? ](*,)

Автор:  Dimitar [ Съб Яну 07, 2012 3:10 am ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

С тия ЦАП-ве не става. Първо ще прочетеш малко повече за I2C протокола, защото като гледам не си много добре запознат и после ще си избереш ЦАП-ве, които могат да се връзват на въпросната шина и имат адреси, т.е. ще гледаш да имат пинове A1 и A0, за да можеш да вържеш до 4 ЦАП-а. И след това ще видиш как в I2C протокола първо изпращаш адреса и после данните, т.е. самите крайни устройства по адреса преди данните разбират за кое от тях са въпросните данни :) . Сега не ми се рови много да гледам дали Майкрочип имат такива ЦАП-ве, но пример за такъв ЦАП е DAC6574 на TI - освен че самия чип има 4 изхода, т.е. 4 ЦАП-а в него също така могат да се свържат паралено на шината 4 такива чипа и да станат общо 16 аналогови изхода. Адреса на всеки чип се задава твърдо (т.е. свързваш ги към маса или захранване) с въпросните адресни входове А1 и А0.

Автор:  head_up [ Съб Яну 07, 2012 3:21 am ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Хубаво е да уточниш каква ти е идеята с тия цап-ове, да не се окаже, че I2C ти идва тясна. Може да се замислиш и за някой SPI-ски, ще е в пъти по-лесно за реализация, като загубиш няколко пина за CS (евентулно).

Автор:  cobreti [ Съб Яну 07, 2012 5:08 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Идеята е всеки байт постъпил на 7-те входа на ПИК-а да се извежда на различен ЦАП, като ги редува 123123... Разгледах I2C протокола и начина на работа на DAC6574 и това което разбрах е, че първо се предава адреса, след това трябва да се прати 1 контролен байт и след това са данните.
Разгледах и SPI протокола и наистина изглежда по-лесно за реализиране- няма адреси, няма потвърждаване (acknowledge), a CS-a посочва кой ЦАП да получава данните. :-k
Може ли да ми препоръчате някакъв 8 (10) битов ЦАП със SPI, лесен за работа?

Автор:  relsys [ Съб Яну 07, 2012 7:48 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

http://ww1.microchip.com/downloads/en/DeviceDoc/22250A.pdf

http://www.newark.com/jsp/search/productdetail.jsp?SKU=53R0108&CMP=AFC-SF-T11

Преди години съм ползвал AD7303, лесен е за работа, ама пък е скъп.
Но пък мога да ти дам драйвера му, да му хвърлиш едно око и да си напишеш за друг:

Код:
////////////////////////////////////
//  This file provide routines    //
//  to work with Analog Device's  //
//  SPI contolled DAC AD7303      //
//  19 - Jul - 2006               //
//  mikroPascal v5.0.0.3          //
//  PIC18F2580                    //
//  relsys@abv.bg                 //
////////////////////////////////////

unit ad7303_driver;

uses p18_ports_v53, definitions, can_comm;

const
  //DAC Control Bits - OR Logic
  DAC_INT_EXT_REF                   : byte = 7;
  DAC_UNCOMMITTED_BIT               : byte = 6;
  DAC_LDAC                          : byte = 5;
  DAC_PDB                           : byte = 4;
  DAC_PDA                           : byte = 3;
  DAC_A_B_SELECT                    : byte = 2;
  DAC_CR1                           : byte = 1;
  DAC_CR2                           : byte = 0;
 
  DACS_AB_FROM_SHIFT                : byte = $00;
  DAC_A_IN_FROM_SHIFT               : byte = $01;
  DAC_B_IN_FROM_SHIFT               : byte = $05;
  DAC_A_REG_FROM_IN                 : byte = $02;
  DAC_B_REG_FROM_IN                 : byte = $06;
  DAC_A_REG_FROM_SHIFT              : byte = $03;
  DAC_B_REG_FROM_SHIFT              : byte = $07;
  DAC_A_IN_FROM_SHIFT_2_DACS_AB     : byte = $20;
  DAC_B_IN_FROM_SHIFT_2_DACS_AB     : byte = $24;
 
  DAC_REF_INT                       : byte = $00;
  DAC_REF_EXT                       : byte = $80;
 
  DACS_AB_ACTIVE                    : byte = $00;
  DAC_A_ACTIVE                      : byte = $10;
  DAC_B_ACTIVE                      : byte = $08;
  DACS_AB_POWER_DOWN                : byte = $18;
 
  DAC_CS                            : byte = 1;

 
var
  CONTROL_PORT                      : byte; absolute _PORTC;
  CONTROL_PORT_DDR                  : byte; absolute _TRISC;
 
  dac_controll, dac_data, dac_channel, active_dac : byte;

implementation

procedure Get_DAC_Data;
begin
  dac_channel := network_data[SI_201_H];
  dac_data := network_data[SI_201_L];
  case dac_channel of
    DAC_A :
      begin
        dac_controll := DAC_REF_INT or DAC_A_REG_FROM_SHIFT or DACS_AB_ACTIVE;
      end;
    DAC_B :
      begin
        dac_controll := DAC_REF_INT or DAC_B_REG_FROM_SHIFT or DACS_AB_ACTIVE;
      end;
  end;
end;

procedure Set_DAC_Data;
begin
  CONTROL_PORT.DAC_CS := Fall;
  SPI_Write(dac_controll);
  SPI_Write(dac_data);
  CONTROL_PORT.DAC_CS := Rise;
end;

procedure DACS_AB_Init_Zero;
begin
  dac_controll := DAC_REF_INT or DACS_AB_FROM_SHIFT or DACS_AB_ACTIVE;
  dac_data := 0;
  Set_DAC_Data;
end;

end.

Автор:  Cekins [ Съб Яну 07, 2012 9:00 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Подавал съм сигнал на 6 такива с един ПИК :) При това с хардуерния модул (само през един канал)... Кьорва работа е че нямат външни адреси, ама номера го направих с аналогов мултиплексер - в твоя случай с 2 към 3 и прекарваш SDA и SCL през него и си готов (ще ти трябват обаче и изводи за към мултиплексора)

Автор:  tgi [ Съб Яну 07, 2012 10:21 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

cobreti написа:
Идеята е всеки байт постъпил на 7-те входа на ПИК-а да се извежда на различен ЦАП, като ги редува 123123... Разгледах I2C протокола и начина на работа на DAC6574 и това което разбрах е, че първо се предава адреса, след това трябва да се прати 1 контролен байт и след това са данните.
Разгледах и SPI протокола и наистина изглежда по-лесно за реализиране- няма адреси, няма потвърждаване (acknowledge), a CS-a посочва кой ЦАП да получава данните. :-k
Може ли да ми препоръчате някакъв 8 (10) битов ЦАП със SPI, лесен за работа?


Щях да ти предложа MAX500 - четворен 8 бита DAC - който е на 20-ина години като модел,
но гледам, че е пъти по-скъп от MAX5500 - който е пак четворка, 12 бита и е добър (ползвам
го вместо MAX525, който е същия но доста по-скъп, навярно заради умножението).

SPI има и друго предимство в контекста на DAC-ове освен скорост, по-предсказуемо
и постоянно е закъснението.

http://eu.mouser.com/search/ProductDeta ... -_-na-_-na

Автор:  cobreti [ Нед Яну 08, 2012 9:49 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )

Автор:  dan [ Нед Яну 08, 2012 10:18 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Може да потърсиш ЦАПове с SPO- изход и да направиш daisy-chain с четирите ЦАПа. Но като цяло с четворен ЦАП ще е най-добре, а и програмата няма да е кой знае колко по-сложна, даже ми се струва, че ще е по-простичка от daisy-chain-a.

Автор:  tgi [ Нед Яну 08, 2012 10:46 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

cobreti написа:
Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )


Няма да спестищ нищо, напротив. Ще трябва да ги избираш отделно.
На DAC има по 2 байта винаги, 2 бита в тях са адреса.
Ако това ти се вижда сложно едва ли някой оттук ще може да ти помогне.

Автор:  relsys [ Нед Яну 08, 2012 10:49 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

cobreti написа:
Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )



Май ти е раничко още за нещо различно от "Led blinking"....

Автор:  cobreti [ Нед Яну 08, 2012 11:10 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

relsys написа:
Май ти е раничко още за нещо различно от "Led blinking"....

Аз нямам претенции, че разбирам- за това и питам. За някой тези въпроси може да са малоумни, но никой не се е родил научен. А и не ме е срам да си призная като не знам... Но пък се уча и малко по малко се надявам да постигна резултата.
Благодаря на всички за полезните отговори и... продължавам да ги боря тия ЦАП-ове ;).

Автор:  Dimitar [ Пон Яну 09, 2012 1:13 am ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Сложи си четворен ЦАП и не се занимавай с глупости. Нищо няма да спестиш от слагането на 4 единични, даже напротив - програмата ще ти е почти същата, а цената на хардуера по-висока :) . tgi правилно ти е казал, че така или иначе ще пращаш 2 байта до ЦАП-а, а какво ще има в тях е без значение за сложността на самата програма.

Автор:  relsys [ Пон Яну 09, 2012 1:41 am ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

cobreti написа:
relsys написа:
Май ти е раничко още за нещо различно от "Led blinking"....

Аз нямам претенции, че разбирам- за това и питам. За някой тези въпроси може да са малоумни, но никой не се е родил научен. А и не ме е срам да си призная като не знам... Но пък се уча и малко по малко се надявам да постигна резултата.
Благодаря на всички за полезните отговори и... продължавам да ги боря тия ЦАП-ове ;).


А трябва да те е срам, че не си и погледнал ПДФ-а, на 1 страница пише кой е единичен, кой двоен....
К'во има да му бориш на ЦАП-а, той иска данни, по скоро SPI трябва да пребориш.

Автор:  BONGO [ Пон Яну 09, 2012 2:07 pm ]
Заглавие:  Re: как PIC18F452 адресира 3 DAC-a

Мога да предложа 2-3 бройки MCP4728 - четворен DAC по I2C, тестван, работи, само че му е ситен корпуса - за развой трудно се лепи, иначе е перфектен!

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/