Перейти к содержанию
    

maxim_P

Участник
  • Постов

    39
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные maxim_P


  1. Добрый день.В 1611 после передачи команды делаю задержку перед переключением на прием. После того как 5419 принял команду, задержка перед переключением на ответ. И еще одна задержка перед переключением 5419 на прием. Все заработало. Еще раз большое спасибо.

     

  2. У вас классическая картина конфликта двух логических выходов. Правда это выяснилось только после "допроса" :) Вы надеюсь какие-то паузы ввели в протокол для исключения этого конфликта? Т.е. один передатчик должен выключать свой выход (сбрасывать бит в P3SEL) сразу после окончания передачи, а второй подключать выход к линии (устанавливать бит в P3SEL) только после некоторой паузы. Причем начало этой паузы должно определяться либо протоколом (символом окончания пакета), либо паузой в приеме пакета данных. Хоть это и тавтология, но смысл в том, что нужна пауза после паузы приема.

    Нет RXD не мешает обмену. Но желательно на линии иметь pull-up резистор, чтобы исключить ложный старт-импульс и начало приема в момент паузы, когда оба передатчика будут отключены от линии.

    Нет. Этим битом можно только организовать "эхо". Зачем вам "эхо"?

    Основной режим 1611 - передача, то есть при инициализации контроллер настраиваю на передачу, как только был отправлен последний байт, сразу же переключаю на прием (Сбрасываю флаг RXIFG, разрешаю прерывания по приему), затем делал паузу, но я ее почему-то закомментировал, восстановлю. Основной режим 5419 - прием, при инициализации настроен на прием. Как только был принят последний байт, далее переключение на передачу, затем формирование ответа, вычисление CRC ответа, передача ответа.

    Как я понял, необходимо делать задержки после каждого переключения на прием/передачу?

  3. Вот же блин! :twak: В таком случае вам нужно после передачи обязательно выключать функцию пина TXD, сбрасывая соответствующие биты в регистрах P3SEL и P3DIR. А устанавливать бит 4 в P3SEL можно только на время передачи. Иначе у вас получается конфликт, когда два выхода TXD одновременно пытаются управлять общей линией передачи.

    И нафига такие заморочки? Не проще ли было обычный дуплекс реализовать? Вам еще одну "лишнюю" дорожку на плате нарисовать было влом?

    Мне было бы не влом, а только в радость. Возникла необходимость замены устройства, на аналог, и это устройство "общается" с базовой платой через полудуплекс. Чтобы не менять базовую плату и программное обеспечение придется делать так.

    Вообще я пробовал такой вариант чуть раньше, как только 1611 передал команду, я переключаю его на прием с помощью P3SEL, 5419 после того как принял последний байт переключается на передачу. Картина та же. Я, конечно, еще раз попробую. Получится только в понедельник. RXD можно не трогать? Кстати, в 5419 есть такой бит USLISTEN, который закорачивает RXD и TXD внутри процессора, его случайно не нужно использовать?

  4. Для RXD вход, для TXD - выход. Пин RXD одного контроллера должен соединяться с TXD второго. Соответственно TXD первого с RXD второго.

    Я же настраиваю P3.4, P3.5 на UART, как настроены POUT, PDIR не имеет значения, так по крайней мере написано в конце даташита. Используется полудуплекс - RXD и TXD закорочены на обоих контроллерах.

    А выводы DVSS обоих контроллеров соединить не забыли случайно?

    Именно заземлен или подключен к трехпроводной сети? Рекомендую убрать заземляющий контакт у осциллографа. Особенно, когда к плате подключен эмулятор, подключенный в свою очередь к PC.

    Земля между контроллерами есть. По поводу заземления точно сказать не могу. Как я уже выше писал, если линию разорвать, то импульсы имеют амплитуду

    3,3В (что и требуется) на обоих контроллерах (измерял осциллографом в тех же условиях), то есть проблема не с осциллографом, а скорее с настройками обмена данных.

  5. После подачи питания или сброса регистры периферии (не все!) принимают какое-то дефотное состояние. Я вам рекомендую не надеятся на это и прописывать все регистры используемой периферии явными значениями и только потом уже в коде программы накладывать маски, модифицируя отдельные биты.

    Конечно нужно. Посмотрите внимательно схемотехнику (блок-схему) пинов в конце даташита.

    А не может так случиться, что пин уже "битый"? Осциллографом, например, неудачно ткнулись. Кстати, осциллограф у вас заземлен? Проверьте это предположение (неисправности пина), запрограммировав его как входной пин GPIO. Также проверьте соответствующий подключению пин на другом кристалле, запрограммировав его как выходной пин GPIO, при этом сформируйте программно его переключение. Эти простые тесты помогут определиться с тем, где именно проблема - в аппаратуре или в программе?

    Все порты РхDIR и РхOUT в начале программы обнуляются. А какое направление RXD еще нужно задать? Пины не битые. При разрыве линии между процессорами сигналы четкие с обоих сторон. А когда линию соединяю, послылаю команду, то сигнал тоже не опускается полностью до нуля, но по амплитуде он достаточно высокий, чтобы прочитать данные. Питание 3,3 вольта. Амплитуда команды примерно 2,7В, амплитуда ответа примерно 0,6В. В сумме они дают 3,3В. Осциллограф заземлен. Прикладываю осциллограмму.

    post-28436-1301646857.jpg

  6. 1. Если вы пользуетесь прерываниями, то не нужно опрашивать флаги готовности. Если опрашиваете флаг UCTXIFGx или UTXIFGx, то запретите прерывания от передатчика.

    2. Маски при инициализации регистров следует накладывать только после того, как вы записали туда вместо дефолтного значения (после POR) явное значение.

    3. При переключении с приема на передачу не следует отключать сам модуль USART, достаточно только запретить/разрешить прерывание. Команда

    ME1 |= UTXE0; // Enabled UART0 TXD

    разрешает функцию пина P3.4 как TXD, но не разрешает функцию P3.5 как RXD. Возможно поэтому возникает конфликт на линии и сигнал "просаживается". Ведь значение P3DIR.bit5 вы явно нигде не задали. И P3OUT.bit5 по-умолчанию в нуле.

     

    1. Прерывания от передатчика запрещены в обоих процессорах, прерывания только по приему.

    2. Не совсем понял.

    3. P3.5 выбран как RXD (P3SEL |= BIT4 + BIT5) или ему еще нужно направление задать? Модули все включил, все вавно та же ситуация.

    Еще по поводу просаживания. Когда нет обмена, на линии высокий уровень, когда идет передача данных, тогда уровень меняется с высокого на низкий, в моей ситуации уровень не доходит до нуля, он только немного опускается, но этого не достаточно для вызова прерывания.

  7. Добрый день. Стоит задача обмена данными между двумя процессорами msp430f5419 и msp430f1611 через полудплекс. msp430f1611 (далее 1611) посылает команду, а msp430f5419 (далее 5419) должен ответить. 5419 команду принимает корректно, формирует ответ, а вот уже ответа на 1611 нет. Смотрел осциллографом, импульсы ответа очень низкие по амплитуде. Не могу понять что не так.

     

    настройки UART Для 5419:

     

    P3DIR |= BIT4;

    P3SEL = BIT4 + BIT5; // разрешаем работу USART0

    UCA0CTL1 |= UCSWRST; // **Put state machine in reset**

    UCA0CTL1 |= UCSSEL_1; // ACLK

    UCA0BR0 = 0x03; // 9600

    UCA0BR1 = 0; // 9600

    UCA0MCTL = 0x06; // Modulation

    UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

    UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt

     

    прием по прерыванию.

    как только был принят последний байт

    начинаю передавать данные:

    for (n2 = 0; n2 < transmit_buf[1] + 1; n2 ++)

    {

    while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?

    UCA0TXBUF = transmit_buf[write_rec_ptr]; // TX -> RXed character

    }

    данные передаю в прерывании по приему.

     

    настройки UART Для 1611:

     

    P3SEL |= (BIT4 + BIT5); // P3.4,5 = USART0 TXD/RXD

    P3DIR |= BIT4;

    U0CTL |= SWRST ; // RST

    U0CTL &= ~SYNC ; // UART MODE

    U0CTL |= CHAR; // 8-bit char, SWRST=1 1 Stop Bit

    UTCTL0 |= SSEL0; // UCLK = ACLK

    U0BR0 = 0x03; // 9600 from 8,0Mz

    U0BR1 = 0x00;

    U0MCTL = 0x06; // Modulation

    UCTL0 &= ~SWRST; // Enable USART

    ME1 |= UTXE0; // Enabled UART0 TXD

     

    как только был передан последний байт

    переключаемся на прием:

    ME1 = URXE0; // Enabled UART0 RXD

    IE1 = URXIE0;

     

  8. Здравствуйте. Использую модуль Sim508_V2.03 для GPS. Модуль не видит спутников. На команды, посланные ему, отвечает, но координаты все нулевые. Пишет No GPS. С модулем общаюсь через отладочную плату Sim508_EVB_V1.01. Там есть два com-порта. Сотоветственно, 2 протокола обмена. Все подключил, как написано в докумментации. Может кто сталкивался с подобной проблемой?

  9. Может быть и это, правда больше похоже на другое:

    Несколько раз был случай, когда при подключении отладчика к устройству с собственным питанием, делали это на горячую, в итоге если сигнальная линия отладчика соединяется с сигнальной линией проца раньше чем соединяются их земли проц улетал на тот свет. Если у вас устройство не автономное и питается от сети, то постарайтесь сначала надежно соединить земли устройства и пк, а уж потом втыкать отладчик.

     

    Процессор паяли с отключенным питанием и без отладчика. После того, как процессор полностью был запаян, его подключали к отладчику.

  10. Если на плате нет замыканий/обрывов, то может случайно вместо MSP430F1611 другой кристалл запаяли? Например, MSP430F1610 или MSP430F167.

     

    На процессоре написано MSP430F1611. На процессоре питание 3.3 вольта. Разрывов для осуществления программирования тоже нет. Процессор паяли с помощью фена. Может быть перегрели сильно?

  11. При попытке запрограммировать процессор, вылетает такая ошибка:

    Thu Jan 29 11:51:53 2009: Failed to write memory at 0x4000

    Thu Jan 29 11:51:55 2009: Warning: Failed to erase main memory

    Thu Jan 29 11:51:55 2009: Warning: Can not write to read only memory.

     

    Процессор стоит в устройстве. Пробовал программировать другой такой же процессор

    (тоже в устройстве), без проблем. Не могу понять почему? может кто знает?

  12. Примерно понятно. :) Мне кажется, Вы немного путаетесь в терминах. Нет такого понятия "мощность дозы", есть доза радиации и мощность излучения.

     

    Как это нет. Есть такое понятие как мощность эквивалентной дозы (Зв/с). Мощность эквивалентной дозы – отношение приращения эквивалентной дозы за какой-то интервал времени. Выражается в зивертах в секунду. Поскольку время пребывания человека в поле излучения при допустимых уровнях измеряется, как правило, часами, предпочтительно выражать мощность эквивалентной дозы в микрозивертах в час.

  13. Так выпускают или эксперимент? Выходит фотодиод не такой уж новый, если на его базе выпускают... ?

     

    Выпускают приборы для измерения мощности дозы. В них используется импульсный режим. То есть обнаружение и подсчет импульсов в единицу времени. А эксперимент - включение фотодиода в токовом режиме, то есть определение дозы радиации. Фотодиод не новый. Где-то 2005 года.

  14. По поводу датчика - фотодиод Hamamatsu S10044.

     

    Это же абсолютно для других целей фотодиод, с его помощью даже для света никто не меряет пикоамперы, а уж для радиации - тем более (он и не предназначен для работы в качестве детектора иогизирующего излучения). Кто додумался его применить, интересно ?

     

    Этот фотодиод вполне неплохо работает в качестве детектора ионизирующего излучения (конкретнее с сцинциллятором).И дозиметрические приборы выпускают на базе этого фотодиода. А по поводу измерения дозы - это пока эксперимент.

  15. 10 Зв, если я правильно понимаю приравнивается к 1 крад. Получается что ваша аппаратура не должна больше суток протянуть в таких условиях без защиты. Агде вы берете излучение такого уровня?

     

    По поводу времени "выживания" аппаратуры исследования не проводил. У нас есть специальное помещение, где содержаться источники большой активности.

     

    Всё равно непонятно.

    При 30нА на выходе "правого" опера должно быть 70 вольт.

     

    При 30нА "правый" усилитель находится в ограничении. Напряжение меряется на выходе "левого" усилителя.

     

    По поводу датчика Автор темы молчит, как партизан. Попробуй что-нить здесь посоветовать...

    Схему доработаю пожже, ввиду её очевидной неактуальности здесь.

     

    По поводу датчика - фотодиод Hamamatsu S10044.

     

    А зачем Вам тогда нужна ещё и форма импульсов? Для удовлетворения любопытства?

     

    Форма импульса мне не важна. Мне важно, чтобы прибор "улавливал" микросекундные вспышки света.

  16. Я так понимаю, что такое излучение толька для ядерной войны, ведь человек при таком излучении схватит годовую дозу за считанные секунды.

     

    Почему сразу для войны. Для специальных нужд,например, в АЭС, в лабораториях где проводятся исследования радиации, ее поведение

     

    А Вы измеряли при этом токи утечки, входные токи ОУ и прочее ?

     

    Токи утечки вроде не меняются. Или я ошибаюсь. Входные токи ОУ не мерял. А что будет?

  17. У меня именно заряд (определенное кол-во электронов), а у maxim P честно говоря незнаю, но думаю что нечто похожее.

     

    А вобще досихпор не понятно про ФД. Я знаю про фотоумножители, счетчики, детекторы, а на фотодиоде честно не слышал.

     

    Фотодиод выдает ток, пропорциональный мощности излучения. В моем случае меряется имеено ток, а не импульсы, так как необходимо измерять большие мощности дозы (десятки Зв/ч). Это токовый режим включения фотодиода. А для импульсного необходимо смещение и желательно сцинциллятор для высокой чувствительности

  18. Вот именно в этом случае эти 5-10 импульсов в интеграле на фоне сотен тысяч остальных ненужных вовсе не будут почувствованы (как иголка в стогу сена)

     

    В этом заключается задача - "почувствовать" эти импульсы и выдать дозу.

  19. Интегрировать на кондере данные заряды помоему неимеет смысла.

     

    Дело в том, что мощность дозы - это не основная мера радиации. Важно измерять именно дозу радиации, которая со временем увеличивается. Например, вы находитесь в зоне радиации, у вас превышение фона допустим на 5 - 10 импульсов. в течение часа мощность дозы не будет меняться, а доза будет увеличиваться и показывать какой уравень радиации вы получили

  20. Вопрос к автору. А требуется радиационная стойкость самой схемы? при каких дозах будет работать ваш прибор?

    Радиационная стойкость трабуется. Нижняя граница - желательно десятки мкЗв/ч. Верхняя - десятки Зв/ч.

     

    Смотрю на Вашу схему из поста #20, и глазам своим не верю.

    При токе ФД в 30 мкА напряжение на выходе левого нижнего ОУ было бы аж 1400В, а правого нижнего - целых 70 кВ. :biggrin:

     

    Извините. Ошибся на три порядка. 30 нА.

  21.  

    Если Вам нужно измерять ещё и токи, схему нужно немного модернизировать.

     

    Необходимо измерять еще и ток, помимо накопления заряда. По поводу выбора операционника - AD8541 не лучший для этих целей. Просто под рукой не было другого. Есть также условия по выбору ОУ: питание - 3.3 вольта, потребление не более 50 микроампер (питаться должен от батарейки).

     

    2 maxim_P

    Скажите, а как Вы собираетесь измерять токи в единицы пикоампер, да ещё делать накопление заряда, если входные токи выбранных Вами ОУ могут достигать 100 пА? :07:

     

    Если перевести в токи значения напряжений на выходе усилителей, то получается, что минимальный ток, который можно было зафиксировать - 4 пикоампера, максимальный 30 микроампер.

  22. Ну, вот и привели бы схему. С указанием всех номиналов и типов элементов. 99% вероятности того, что Ваши траблы заключаются в некачественном её исполнении.

     

    Вот схема. АЦП3 - измеряются малые токи. АЦП2 - измеряются большие токи. АЦП1 - накопление заряда.

    circuit.bmp

×
×
  • Создать...