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

diehard

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник

Контакты

  • Сайт
    Array
  • ICQ
    Array
  1. Для PIC`ов не подходит
  2. 1-Wire

    Спасибо, прочитал. Ошибку нашел. В конце функции чтения бита необходимо было сделать задержку 45us, для выдержки тайминга в соответствии с даташитом. unsigned char Wire1_ReadBit() { unsigned char ReadBit=0; SetBit(Wire1DDR,Wire1Bit); // Перевод порта в режим записи WIRE1_DN(); // Линия вниз delay_us(1); WIRE1_UP(); // Линия вверх ClearBit(Wire1DDR,Wire1Bit); // Перевод порта в режим чтения delay_us(14); // Чтение линии 1-Wire if( IsBitSet(Wire1Pin, Wire1Bit) ) ReadBit=1; // В линии 1 delay_us(45); // <------------------------------------------------- Ошибка была здесь return ReadBit; }
  3. 1-Wire

    Не получается корректно прочитать iButton. Т.е. читается что-то из линии, но совсем не то. В наличии имею две iButton, считанный код для каждой уникальный и повторяется при каждом чтении. Ткните носом, где не прав. Запись: void Wire1_WriteBit(unsigned char cBit) { WIRE1_DN(); if(cBit==0) delay_us(60); if(cBit==1) delay_us(1); WIRE1_UP(); // Отпускание линии if(cBit==0) delay_us(1); if(cBit==1) delay_us(60); } void Wire1_SendByte(unsigned char data) { unsigned char temp; unsigned char i; SetBit(Wire1DDR,Wire1Bit); // Перевод порта в режим записи for (i = 0; i < 8; i++) // Отправка байта в линию { temp = data & 0x01; if (temp) { Wire1_WriteBit(1); } else { Wire1_WriteBit(0); } data >>= 1; } ClearBit(Wire1DDR,Wire1Bit); // Перевод порта в режим чтения } Чтение: unsigned char Wire1_ReadBit() { unsigned char ReadBit=0; SetBit(Wire1DDR,Wire1Bit); // Перевод порта в режим записи WIRE1_DN(); // Линия вниз delay_us(1); WIRE1_UP(); // Линия вверх ClearBit(Wire1DDR,Wire1Bit); // Перевод порта в режим чтения delay_us(14); // Чтение линии 1-Wire if( IsBitSet(Wire1Pin, Wire1Bit) ) ReadBit=1; // В линии 1 return ReadBit; } unsigned char Wire1_ReadByte() { unsigned char data; unsigned char i; data = 0x00; for (i = 0; i < 8; i++) { data >>= 1; if (Wire1_ReadBit()) { data |= 0x80; } } return data; } После посылки Reset и приема Presence Делаю так: Wire1_SendByte(0x33); // Отправка команды чтения серийного номера lcd_gotoxy(0,0); for(i=0;i<8;i++) { cByte[i]=0; // Чтение одного байта из устройства cByte[i]=Wire1_ReadByte(); // Чтение одного байта из устройства if(i==5) lcd_gotoxy(0,1); sprintf(cStr, "%2x ", cByte[i]); lcd_puts(cStr); }
  4. Здесь все что требуется: dlehard.narod.ru Радиоканал организован на TRC101/2 (HopeRF). Трансиверы сам покупал в Тритоне. Все работает. В фирменном примере работы HopeRF есть ошибка в инициализации приемника или передатчика, уже не помню. В примере реализации эта ошибка явно указана и исправлена.
  5. По RF12 и TRC101 вот здесь dlehard.narod.ru сложено все, что в свое время смог нарыть, плюс к этому и примеры PCB антен с расчетами для этих трансиверов. Мне в свое время очень помогло. Может кому тоже пригодиться.
  6. Не могу второй день побороть DS1302. Проблема в том, что не могу прочитать ни время ни дату, вообще ничего. С записью проблем нет. Симулирую в протеусе. В железе тоже не работает. char DS1302_Read(char caddr) { char cdata=0, i=0; DS1302_DDR= (1<<DS1302_CLK) | (1<<DS1302_RST) | (1<<DS1302_IO); DS1302_PORT SetBit(DS1302_RST); for(i=0; i<8; i++) // запись адреса нужного регистра для чтения { if(caddr&0x01) DS1302_PORT SetBit(DS1302_IO); else DS1302_PORT ClearBit(DS1302_IO); caddr>>=1; DS1302_PORT SetBit(DS1302_CLK); delay_us(10); DS1302_PORT ClearBit(DS1302_CLK); delay_us(10); } DS1302_DDR = (0<<DS1302_IO); DS1302_PORT =(1<<DS1302_IO); for(i=0; i<8; i++) // чтение возвращаемого значения { cdata >>= 1; if(DS1302_PORT & (1<<DS1302_IO)) cdata |= 0x80; DS1302_PORT SetBit(DS1302_CLK); delay_us(10); DS1302_PORT ClearBit(DS1302_CLK); delay_us(10); } DS1302_PORT ClearBit(DS1302_RST); DS1302_DDR= (0<<DS1302_CLK) | (0<<DS1302_RST) | (0<<DS1302_IO); return cdata; } #define DS1302_HOURREAD 0x85 // hour register read соответственно читать пытаюсь так: hour=DS1302_Read(DS1302_HOURREAD);
  7. По трансиверам HopeRF (RF12B = TRC101) ссылки: Быстрый старт для HopeRF (TRC101) Даташит на TRC101 PCB антена
  8. TRC101(2) = RF12 Я брал здесь. http://trt.ru/Stock.php?Part=460 Сначала взял несколько штук для экспериментов. Потом у них же закупил необходимую партию.
  9. USB programmer AVR910

    Дрова под 32-х битную висту использую уже почти год. Проблем нет даже на ноутбуке. Драйвера отсюда из ветки брал.
  10. USB programmer AVR910

    Уже год на всех компьютерах стоит виста. Использую драйвера из этой ветки по висту 32бит. Проблем нет ни на одном компьютере. Использую CodeVision.
  11. Официальный CodeVision

    Приобрел CV и теперь в ступоре. Как устанавливать CV после окончания годичной подписки и слета операционки? Раньше был license.dat, который выгружался из рабочего CV и позволял переустанавливать CV. Теперь же все происходит обменом по электронке ключами активации. Вразумительного ответа на вопрос разработчики не дали. Тут у кого-то тоже есть официальный CV. Не знаю, правда, у кого. Как дела обстоят у него?
  12. Там где Vin, у меня стоит диодный мост, а с него на ОУ. Так вот если после моста поставить конденсатор 10мФ, то начинает работать как надо. Только в одну сторону, через ОУ конденсатор разряжается очень медленно. Поставил 1мФ, напряжение на выходе ОУ ~ за 30 секунд поднимается до 3.6в, с 0.1мф та же хрень. Объясните, где собака порылась?
  13. Взял другой 358-й, та же песня. Правильно ли я посчитал резисторы?
  14. На выходе постоянно 3.6В. При изменнении напряжения на входе, на выходе 3.6В
×
×
  • Создать...