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

ANT

Свой
  • Постов

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

  • Посещение

Весь контент ANT


  1. P4 в AT89C5131

    Извиняюсь, был какой-то глюк при отправке ответа :-(.
  2. P4 в AT89C5131

    Это обычные линии 51-го, вот кусок рабочего кода с ними(программная реализация I2C): sbit MCU_SCL_OUT= P4^0; // TWI clock sbit MCU_SDA= P4^1; // TWI data #define scl_out MCU_SCL_OUT #define sda_io MCU_SDA //-------------------------------------------------- void i2c_start(void) { scl_out = 1; delay(1); sda_io = 1; delay(1); sda_io = 0; // Start condition delay(1); } //-------------------------------------------------- void i2c_stop(void) { scl_out = 1; delay(1); sda_io = 0; delay(1); sda_io = 1; // Stop condition delay(1); } //-------------------------------------------------- void i2c_send_byte(byte B) {byte i; for( i=0x80; i; i >>= 1 ) { scl_out = 0; delay(1); sda_io = (i & B) ? 1 : 0; delay(1); scl_out = 1; delay(1); } scl_out = 0; delay(1); sda_io = 0; delay(1); } //-------------------------------------------------- bit i2c_get_ack(void) {bit b; sda_io = 1; delay(1); scl_out = 1; delay(1); b = !sda_io; // Acknoledge bit delay(1); scl_out = 0; delay(1); sda_io = 0; delay(1); return b; } //-------------------------------------------------- void i2c_wr_byte(word addr, byte dat) { i2c_start(); // Start i2c_send_byte(I2C_WRITE); // Control byte WRITE i2c_get_ack(); i2c_send_byte((byte)(addr & 0xff)); // Word address i2c_get_ack(); i2c_send_byte(dat); // Data i2c_get_ack(); i2c_stop(); // Stop initiates write cycle delay_ms(21); } //-------------------------------------------------- byte i2c_receive_byte(void) {byte b, i; b = 0; scl_out = 0; delay(1); for( i=0x80; i; i >>= 1 ) { scl_out = 1; delay(1); b |= sda_io ? i : 0; delay(1); scl_out = 0; delay(1); } scl_out = 1; delay(1); scl_out = 0; delay(1); return b; } //-------------------------------------------------- byte i2c_rd_byte(word addr) {byte b; i2c_start(); // Start i2c_send_byte(I2C_WRITE); // Control byte READ i2c_get_ack(); i2c_send_byte(addr); // Word address i2c_get_ack(); i2c_start(); i2c_send_byte(I2C_READ); // Control byte READ i2c_get_ack(); sda_io = 1; delay(1); b = i2c_receive_byte(); i2c_stop(); // Stop return b; }
  3. P4 в AT89C5131

    Мне кажется, что Вам надо просто подтянуть эту линию к питанию каким-нибудь резистором, и тогда сможете писать и 0 и 1.
  4. В Инете нашёл какую-то сырую модель от Orcad, втащил в Microcap 7, пришлось чуть-чуть подправить синтаксис. Но не работает: VCO не генерит, на выходе фазового детектора - ноль. У когого-нибудь есть проверенная модель?
  5. RAMTRON FM31256 Real Time Clock

    Большое спасибо за подсказку. Вставка последовательно резисторов 20к в цепь SCL и 510 ом в цепь SDA полностью решила проблему.
  6. RAMTRON FM31256 Real Time Clock

    Поставил FM31256 в качестве часов. Пока часы опрашивал редко, не замечал неточности хода. Когда стал опрашивать раз в секунду, стали отставать на пару минут в сутки. У кого-нибудь был такой эффект? Кварц пока не заменял, может с ним что-то случилось.
  7. Уже несколько лет заказываю у них 2-сторонние платы. Качество приличное- как у Резонит на импортных материалах. Сроки выдерживают, срывов практически не было. К сожалению, несколько месяцев назад подняли цены, но мой повторный заказ сделали по старым ценам, что приятно.
  8. Вот, нашел толковые рекомендации по этому поводу. Применение отрицательного LDO для формирования +1,3В: http://www.maxim-ic.com.cn/appnotes.cfm/appnote_number/3198 6 Вариантов с резисторами: http://www.micrel.com/_PDF/HBW/App-Notes/termination.pdf
  9. Для разных вариантов ECL нагрузку рекомендуют подключать к небольшому потенциалу около земли: NECL - к -2В, LVPECL - к +1,3В. Причем нагрузка - для эмиттерных повторителей (тянет ток от земли). На чем принято делать эти источники напряжения так, чтобы при большом количестве нагрузок в разных каналах не было взаимовлияния?
  10. Кто-нибудь пользуется RAPIDESIGNER-ом? Я попробовал сделать заказ у National Semiconductor. Не знаю, когда пришлют.
  11. Попробовал несколько разных калькуляторов и формул для 4-слойки и зазора 0,2 мм. Получился разброс ширины проводника от 0,09 до 0,23 мм. Наверное, истина где-то посередине, примерно в районе 0,15 мм, как считает vin. Интересно, кто-нибудь измерял реальные значения импеданса на изготовленных платах?
  12. Посчитал: s=0,2 h=1,5 Zdiff=100 Ом => Z0=86,55 Ом. Откуда при E=4.3 t=0,017 мм получается w=1,02 мм. Genesis 2003 от EagleWare даёт 1,3 мм. vin ниже предлагает 0,25 мм. Что же на самом деле?
  13. Дифференциальные пары с нагрузкой 100 Ом, текстолит FR-4 1,5 мм. Вариант 1: двуслойная плата; вариант 2: 4-слойная плата. Может есть у кого-нибудь готовые значения для ширины дорожек, расстояния между проводниками пары и расстояния между парами. (Задача-то стандартная).
  14. Спасибо, видимо так можно сделать, но заказчик по каким-то соображениям, против транзисторов, да и время поджимает. Теперь еще одна проблема: сигналы LVDS нужно выводить на разъем VHDCI-68 (Ultra SCSI-2) с мелким шагом. Расстояние между падами - 0,4 мм. Т.е. норма зазор/проводник 0,13/0,13. Где такое могут изготовить?
  15. Как я понимаю, NIM - это NECL? Есть Application Notes за номером AN-1568 от ONSemi о сопряжении ECL и LVDS. В Вашем случае, если надо работать только с ВЧ сигналом, я бы применил трансформатор с соответствующими цепями смещения. Можно поставить дифференциальный каскад - чуть более громоздко, но тоже приемлемо - лучше, чем дополнительный преобразователь NECL -> LVPECL. <{POST_SNAPBACK}> NIM - это не совсем NECL. 0В - логический ноль, -0,8В на нагрузке 50 Ом - логическая единица. Переведу уровень компаратором MAX9693, а дальше сделаю как в AN-1568. Спасибо.
  16. I/o порты в At89C5131

    Выходы P0 - с открытым стоком, их надо притянуть к питанию какими-нибудь резисторами.
  17. Задача - сделать преобразователь NIM -> LVDS. При этом вносимый джиттер должен быть минимальным. Предлагают цепочку NIM -> LVPECL -> LVDS (MAX9693 -> MC100LVEL90 -> SN65LVDS100D). Не знает ли кто-нибудь другой вариант, покороче?
  18. В новой версии (2.10) обнаружился баг, которого не было в предыдущей. Из-за него не инициализировалась карта. В файле sd_cmd.c 2 раза повторяется строчка SPSR=0x01; тогда как во 2 раз должно быть SPSR=0x00; Обнаружил, сравнивая между собой версии.
  19. Код для HT1621 на С.

    Есть на С для НТ1611 и С51. Подойдёт?
  20. Использование avreal

    У меня под XP не работает, точнее работает со сбоями. Ипользую Avreal, когда JTAG-ICE почему-то перестает видеть Мегу. Если запустить Avreal и считать фузы, то после этого оживает JTAG.
  21. CVAVR 1.24.6 Ошибка

    В хелпе CVAVR написано: It is important to note that bit selector access to I/O registers located in internal SRAM above address 5Fh (like PORTF for the ATmega128 for example) will not work, because the CBI, SBI, SBIC and SBIS instructions can’t be used for SRAM access. Т.е. прямые битовые операции не поддерживаются для портов F и G. Управление светодиодом, не трогая остальных бит регистра, можно сделать так: #define LED_RED_OUT PORTG // Red LED output PORTG PIN0 LED_RED_OUT = (LED_RED_OUT & ~0x01) | (led_red_flag ? 0x00 : 0x01);
  22. Так получается закорючка. Правильно проходит только прямое указание ASCII кода lcd_putchar (0xAC);
  23. Насчет строковых констант все ясно, а как быть с символьными константами типа 'Ш' или 'Ю'?
  24. Большое спасибо, помогло! А терминалке у меня был выставлен фонт в кодировке OEM/DOS. При установке фонта в кодировку cyrillic всё стало отображаться правильно.
  25. В строковой константе все видно нормально, а при выводе на терминалку через последовательный порт - латиница нормальная, а вместо кириллицы - закорючки. Не говоря уже об LCD. В других компилляторах пользовался самодельными программами для LCD, с перекодированием, а как красивее сделать для CV? C терминалками проблем вообще не было.
×
×
  • Создать...