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

Scrambler

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Scrambler

  • Звание
    Участник
    Участник
  • День рождения 23.01.1983

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Неужели никто ничего не посоветует? :unsure:
  2. Отлично, есть люди с практикой! :rolleyes: Тогда можно я свои несколько вопросов задам? У меня, правда, CC1100, но не суть важно. Я WOR настроил, работает. Как раз с T=1 сек. Скорость передачи - 38400. Размер пакета - 20 байтов. 4 байта преамбулы, 4 байта sync. Соответственно, за 1 секунду успеет пройти 170 с лишним таких посылок. Да и то нет гарантии что один из пакетов попадет своей преамбулой в период, когда радио проснулось и слушает. Как тут лучше поступить? Единственная мысль, которая пришла мне в голову - послать строб STX (начнется посылка преамбулы), подождать секунду, после чего записать в TX FIFO пакет данных. Но сама идея надолго занимать радиоканал как-то не очень симпатична. Может быть есть какие-то другие подходы? Как поступают люди с опытом?
  3. Сжечь fuse

    Добрый день! А есть ли какой-нибудь простой и недорогой способ пожечь fuse? В частности интересуют MSP430F2013 и MSP430F2272. На что-то серьезное сейчас нет денег, а собирать что-то сложное - нет времени свободного. :( Поделка из разряда хобби, но защитить ее в будущем хочется. Что посоветуете?
  4. Ну что, неужели никто не знает? :rolleyes: :05:
  5. Добрый день! Заказал вот такие вот печатные платы с нанесенным пленочным фоторезистом: http://www.elfa.spb.ru/catalog/162098.shtml Вопрос к аудитории - кто-нибудь знает, как ее лучше экспонировать и проявлять? Может, кто уже работал с такими? Спасибо.
  6. Всем спасибо за ответы, особенно VAI за обилие ссылок. :) Обязательно их все просмотрю. Что же касается битового типа, то, вероятно, вы немного не так меня поняли. Я жалуюсь :) не на отсутствие битового типа, а на то, что нельзя просто так обратиться к биту GIE. Надо обязательно помнить, в каком регистре он находится и оперировать уже с этим регистром. Вот именно это и неудобно.
  7. Доброго дня всем. Поделитесь секретом - кто какой компилятор использует для 430-х? Попробовал IAR - среда всем хороша, отладчик неплохой. Но неудобно писать код - в компиляторе нет битового типа данных (как в HI-TECH), что делает невозможным записи вида GIE=0; - вместо этого надо писать INTCON&=~GIE; (например). Эх, привык я к PICC - не знаю, чего теперь делать. Посмотрел на сайте HI-TECH, у них есть компилер для MSP430, но в списке процессоров нет MSP430F2013 (а именно он лежит у меня на столе). Соответственно, посоветуйте, пожалуйста, что-нибудь еще. Ссылки для скачивания приветствуются. Ну или если HT уже поддерживает этот проц, то дайте линк на HI-TIDE и компилер. Ну и на лекарство. Спасибо.
  8. Новые вести с поля битвы... Я просто в шоке, дорогие коллеги. Перепаял макетную плату немного - включил датчик 2 через джампер. Итак: 1) Размыкаем джампер - отключаем датчик 2 от RB6. Подносим блок - включается двигатель. Ставим блок на транспортер - он доезжает до задней стенки, замыкает датчик 3, мотор останавливается. 2) Замыкаем джампер - подключаем датчик 2 к RB6. Нажимаем кнопку. Мотор включается, объект доезжает до момента выключения датчика 2 и останавливается. 3) Размыкаем джампер. Вынимаем блок и снова подносим к датчику 1. Мотор включается. ... ... ... Поменял местами 1 и 2 датчики - результат тот же самый - при постоянно замкнутом джампере виснет, а если на время загрузки джампер размыкать, то все ок. То есть, получается, зависание происходит при срабатывании датчика 2, но только при каких-то условиях. Но при каких? Неужели контроллер зависает, если, например, появляется 0 на RB6, но только при условии что RB5=0, BR7=1 и т.д. ? Бред какой-то...
  9. PIC16F876A капризничает

    Доброго времени суток, коллеги! Прошу помощи, т.к. сам уже 2 дня бьюсь и безрезультатно. Может, всезнающий All поможет... Одна и та же программа (за исключением инита компараторов и источника опорного напряжения, которых нет не в "A" серии, а также значения слова конфигурации) работает на 87x, но глючит на 876A. Конфигурация везде идентичная: генератор HS, без WDT, с POR, без BOR, память не защищена, без LVP. Даташит изучал еще и еще раз, читал всякие Errata, предпринял уже, наверное, все, что можно. Уже даже дошел до того, что запустил девайс на 2 мегагерцах (думал, мало ли 876A не тянет 18 мегагерц). Котнроллеры прошиваются и верифицируются на ура (и 873, и 876, и 876A). Но 873 и 876 работают полностью как задумано, а 876A глючит. Идея проста - нужен девайс :) Вернее, целых 5. Девайс представляет собой некую камеру с транспортером и дверцой. В него загружаются исследуемые блоки. В камере будут 6 датчиков (среди них и цифра, и аналог). Исходя из того, что из 6 будет как минимум 1 цифровой, я выбрал PIC16F876 для данного девайса (5 каналов АЦП). Т.к. в магазине не было 876 в соиках, взял 876A в соиках и 1 в дипе на макетку. Итак, что мы имеем? А имеем вот что (873 и 876 валялись в закромах): * PIC16F873 DIP28 - 1 штука * PIC16F876 DIP28 - 1 штука * PIC16F876A DIP28 - 1 штука * PIC16F876A SO28 - 5 штук * упрощенная программа - 1 штука. В общих чертах алгоритм такой: Есть 3 датчика положения блока и 1 кнопка. Датчики расположены вдоль линии загрузки исследуемого объекта. Дверца закрыта. 1) При срабатывании 1-го датчика нужно открыть дверцу, запустить мотор транспортера (внутрь), дождаться срабатывания 3-го датчика, выключить мотор и закрыть дверцу. Если выключится 1 датчик, но не сработает второй (объект поднесли к дверце а потом убрали) нужно также остановить мотор и закрыть дверцу. 2) Собирать информацию с датчиков, попутно посылая ее по UART'у. 3) При нажатии кнопки если активен второй датчик, открыть дверцу, запустить мотор транспортера (наружу), ждать, пока объект выйдет из зоны действия 2-го датчика, остановить мотор, ждать когда объект уберут, закрыть дверцу. Дверцу я убрал, обработку датчиков и работу с UART тоже. Осталась простенькая программка: Обрабатываются кнопка (RB4) и датчики положения (RB5-RB7). При срабатывании кнопки или датчика запускается таймер1, отсчитывает время дребезга контактов. На прерывании таймера я анализирую кнопки и датчики. Итак, вот в чем выражается глюк: При срабатывании 1-го датчика заводится двигатель. Если объект убрать - останавливается. Тут все без вопросов. Если объект продвинуть до транспортера, то, стоит объекту доехать до 2-го датчика, мотор останавливается и контроллер перестает на что-либо реагировать (зависает?). Если объект вытащить и снова поднести к 1 датчику - мотор уже не включится. :( Если же питание на контроллер подать в момент, когда объект уже загружен, по кнопке он его выплюнет, все нормально. Потом даже снова даст вставить, но опять "довезет" только до 2-го датчика. Кнопка и 3 датчик - это просто кнопки, включенные между землей и ногами котнроллера. Датчики 1 и 2 - оптические с открытым стоком на выходе. Pull-up резисторы на PORTB включены. Компилятор HI-TECH PICC COMPILER (Microchip PIC) V8.05PL2 #include <pic.h> #define M_OUT RB1 #define M_IN RB2 #define BLOCK_OUT() { M_OUT=1; M_IN=0; } #define BLOCK_IN() { M_OUT=0; M_IN=1; } #define BLOCK_HOLD() { M_OUT=0; M_IN=0; } #define BTN RB4 #define SENS1 RB5 #define SENS2 RB6 #define SENS3 RB7 #define TRISA_CONST 0b00000011 #define TRISB_CONST 0b11110000 #define TRISC_CONST 0b00000000 #define PORTA_CONST 0b00100000 #define PORTB_CONST 0b00000000 #define PORTC_CONST 0b00100000 bit bEject; bit bKeypress; void init_all(); void ScanSensors(); void main() { GIE=0; init_all(); bEject=0; bKeypress=0; GIE=1; while(1) { ScanSensors(); } } void interrupt ISRproc() { char t; // Debounce completed if(TMR1IF && TMR1IE) { bKeypress=1; TMR1IE=0; } // Button pressed if(RBIF) { if(!TMR1IE) { TMR1L=0; TMR1H=0; TMR1IF=0; TMR1IE=1; } t=PORTB; // чтение порта B, чтобы сбросить mismatch condition RBIF=0; } } void init_all() { TRISA=TRISA_CONST; PORTA=PORTA_CONST; TRISB=TRISB_CONST; PORTB=PORTB_CONST; TRISC=TRISC_CONST; PORTC=PORTC_CONST; OPTION=0b00000000; // PU en, internal T0 1:2, page 23 INTCON=0b01001000; // periph, RB int en, page 24 PIE1=0b00000000; PIR1=0x00; PR2=50; PIE2=0b00000000; // no ints, page 27 PIR2=0x00; T1CON=0b00000001; // T1 en, 1:1, internal, page 57 T2CON=0b00000000; CCP1CON=0x00; CCP2CON=0x00; // CCP mods dis, page 64 SSPCON=0x00; // SSP dis, page 73 TXSTA=0; RCSTA=0; SPBRG=0; ADCON0=0b11000001; // Fosc/32, CH0, ADC en, page 127 ADCON1=0b00000100; // LJ, Fosc/32, 3:0, page 128 #ifdef _16F876A CMCON=0b00000111; // CM dis, page 135-136 CVRCON=0x00; // VR dis, page 141 #endif } void ScanSensors() { if(!bKeypress) return; bKeypress=0; if(bEject) { if(SENS2!=0) { BLOCK_HOLD(); bEject=0; return; } } else { if(BTN==0) { if(SENS2==0) { bEject=1; BLOCK_OUT(); return; } } if(SENS3==0) { BLOCK_HOLD(); return; } if(SENS1==0) { BLOCK_IN(); return; } } if(SENS1!=0 && SENS2!=0 && SENS3!=0) { BLOCK_HOLD(); } } В чем может быть загвоздка, подскажите, пожалуйста. Может ли быть дело в контроллере?
  10. Доброго времени суток, коллеги. Вот, столкнулся тут с задачей нетривиальной. Сам над ней думаю уже вторую неделю, так что настала пора спросить у общественности. Нужно сделать девайс с многовольтовым вводом-выводом. То есть, эта штуковина должна уметь делать двусторонний цифровой ввод-вывод на лог. уровнях 5 вольт (32 бита). Для этого используется микроконтроллер. НО помимо этого на каждой из этих линий должна быть возможность выставить +12 вольт. Возможно, в будущем потребуется сделать еще и -12 вольт, но это вряд ли. Как это можно реализовать меньшей кровью? Подключить шину к контроллеру через резисторы, снабдить стабилитронами на 5 вольт и MOSFET'ами подавать +12 после резисторов не катит - нужно небольшое выходное сопротивление у выходов. Смотрел в сторону интегральных коммутаторов, но у них либо напряжение до 5 вольт, либо сопротивление открытого канала высокое, либо стоят целое состояние. В общем, я в растерянности. Помогите идеей, пожалуйста.
  11. Подогнали мне тут пару нерабочих сидюков. Распаял их на запчасти. Вот, собственно, вопрос возник - под движком стоят 3 маленьких 4-ногих прямоугольничка. Это датчики Холла? А если да, то никто не в курсе их распиновки? Судя по плате - 2 ноги - питание, а вот еще 2 ноги - это что? Или там просто элементы Холла стоят? Раньше встречался только с 3-ногими датчиками. Спасибо.
  12. Так это все в пределах нормы. КМОП-вход можно подключать к Vdd или Vss без всяких опасений (Vdd - питание, Vss - общий). Это же вход, а не выход. ;)
  13. Да, конечно, я знаю, что 78l05 далеко как не идеал в данном случае. Просто специфика работы устройства такова, что оно потребляет около 5-7 миллиампер в режиме 1 и около 20-30 миллиампер в режиме 2. И работает оно так: час работы в сутки (примерно). Да и ничего лучше 78l05 в том же самом питерском Чип-и-Дипе нет. :( Но все равно спасибо всем ответившим! Буду делать на выключаемом делителе.
  14. Спасибо всем ответившим. s_yakov, что вы можете посоветовать из таких преобразователей? Желательны малый размер, минимум обвязки, минимум цены (в порядке приоритета). Просто девайс должен быть малогабаритным. savcom, прицепил схемку, как это планировал сделать я: Вроде бы все гладко. НО. Контроллер работает на напряжениях от 3 до 5.5 вольт. То есть вся эта схема успешно запустится, если батарейка даст 5 вольт, а после стабилизатора напряжение будет и того меньше (но больше 3 вольт). Тогда вышеприведенный механизм работать не будет, т.к. напряжение, даваемое внутренним делителем контроллера будет уже относительно 3-4 вольт, а не относительно 5. Спасибо.
  15. Всем доброго времени суток! В общем, ситуация такая - есть батарейка 9 вольт "крона". От нее через 5-вольтовый стабилизатор (78l05) питается некая схемка. В схеме есть контроллер (pic16f628a), которым, собственно, напряжение и нужно померить. Измерение однократное в момент пуска схемы. Есть 3 диапазона: От 9 до 7 вольт - нормальный режим От 7 до 6 вольт - warning От 6 и ниже - критический режим. На борту у контроллера есть следующая полезная периферия: 2 аналоговых компаратора и модуль опорного напряжения (фактически 4-разрядный цифровой резистор). Как лучше узнать остаток батарейки? Можно ли это сделать указанными средствами? Как вообще такое делается? Заранее всем спасибо.
×
×
  • Создать...