Отговори на тема  [ 18 мнения ]  Отиди на страница 1, 2  Следваща
как PIC18F452 адресира 3 DAC-a 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 13, 2007 12:32 pm
Мнения: 21
Местоположение: Plovdiv
Мнение как PIC18F452 адресира 3 DAC-a
Здравейте,
искам с PIC18F452 да управлявам 3 ЦАП-а (избрал съм TC1320), като използвам от процесора SCL (I2C clock) и SDA (I2C data).
Та въпроса ми е как ПИК-а да разпознава на кой ЦАП праща данните като имам само 1 clock? ](*,)


Съб Яну 07, 2012 2:19 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение Re: как PIC18F452 адресира 3 DAC-a
С тия ЦАП-ве не става. Първо ще прочетеш малко повече за I2C протокола, защото като гледам не си много добре запознат и после ще си избереш ЦАП-ве, които могат да се връзват на въпросната шина и имат адреси, т.е. ще гледаш да имат пинове A1 и A0, за да можеш да вържеш до 4 ЦАП-а. И след това ще видиш как в I2C протокола първо изпращаш адреса и после данните, т.е. самите крайни устройства по адреса преди данните разбират за кое от тях са въпросните данни :) . Сега не ми се рови много да гледам дали Майкрочип имат такива ЦАП-ве, но пример за такъв ЦАП е DAC6574 на TI - освен че самия чип има 4 изхода, т.е. 4 ЦАП-а в него също така могат да се свържат паралено на шината 4 такива чипа и да станат общо 16 аналогови изхода. Адреса на всеки чип се задава твърдо (т.е. свързваш ги към маса или захранване) с въпросните адресни входове А1 и А0.


Съб Яну 07, 2012 3:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: как PIC18F452 адресира 3 DAC-a
Хубаво е да уточниш каква ти е идеята с тия цап-ове, да не се окаже, че I2C ти идва тясна. Може да се замислиш и за някой SPI-ски, ще е в пъти по-лесно за реализация, като загубиш няколко пина за CS (евентулно).


Съб Яну 07, 2012 3:21 am
Профил WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

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


Съб Яну 07, 2012 5:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 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.


Съб Яну 07, 2012 7:48 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: как PIC18F452 адресира 3 DAC-a
Подавал съм сигнал на 6 такива с един ПИК :) При това с хардуерния модул (само през един канал)... Кьорва работа е че нямат външни адреси, ама номера го направих с аналогов мултиплексер - в твоя случай с 2 към 3 и прекарваш SDA и SCL през него и си готов (ще ти трябват обаче и изводи за към мултиплексора)


Съб Яну 07, 2012 9:00 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 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

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Съб Яну 07, 2012 10:21 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 13, 2007 12:32 pm
Мнения: 21
Местоположение: Plovdiv
Мнение Re: как PIC18F452 адресира 3 DAC-a
Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )


Нед Яну 08, 2012 9:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: как PIC18F452 адресира 3 DAC-a
Може да потърсиш ЦАПове с SPO- изход и да направиш daisy-chain с четирите ЦАПа. Но като цяло с четворен ЦАП ще е най-добре, а и програмата няма да е кой знае колко по-сложна, даже ми се струва, че ще е по-простичка от daisy-chain-a.

_________________
Хайде де!


Нед Яну 08, 2012 10:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: как PIC18F452 адресира 3 DAC-a
cobreti написа:
Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )


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

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Нед Яну 08, 2012 10:46 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: как PIC18F452 адресира 3 DAC-a
cobreti написа:
Тези ЦАП-ове дето сте ми предложили са или двойни, или четворни. Има ли вариант за единичен ЦАП и само CS-a да определя кой ЦАП да работи и кой да чака (да имам CS1, CS2 и CS3 като изходи от ПИК-а)? Истината е, че гледам да си улесня програмата и да избягам от пращането на допълнителен байт към ЦАП-а, за да му кажа кой изход да работи (и без това програмата ще ми е мисия невъзможна... #-o )



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


Нед Яну 08, 2012 10:49 pm
Профил ICQ WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 13, 2007 12:32 pm
Мнения: 21
Местоположение: Plovdiv
Мнение Re: как PIC18F452 адресира 3 DAC-a
relsys написа:
Май ти е раничко още за нещо различно от "Led blinking"....

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


Нед Яну 08, 2012 11:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение Re: как PIC18F452 адресира 3 DAC-a
Сложи си четворен ЦАП и не се занимавай с глупости. Нищо няма да спестиш от слагането на 4 единични, даже напротив - програмата ще ти е почти същата, а цената на хардуера по-висока :) . tgi правилно ти е казал, че така или иначе ще пращаш 2 байта до ЦАП-а, а какво ще има в тях е без значение за сложността на самата програма.


Пон Яну 09, 2012 1:13 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: как PIC18F452 адресира 3 DAC-a
cobreti написа:
relsys написа:
Май ти е раничко още за нещо различно от "Led blinking"....

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


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


Пон Яну 09, 2012 1:41 am
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Сря Ное 10, 2004 1:06 am
Мнения: 161
Местоположение: Нова Загора
Мнение Re: как PIC18F452 адресира 3 DAC-a
Мога да предложа 2-3 бройки MCP4728 - четворен DAC по I2C, тестван, работи, само че му е ситен корпуса - за развой трудно се лепи, иначе е перфектен!


Пон Яну 09, 2012 2:07 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 18 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни