ANT
Свой-
Постов
182 -
Зарегистрирован
-
Посещение
Весь контент ANT
-
Извиняюсь, был какой-то глюк при отправке ответа :-(.
-
Это обычные линии 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; }
-
Мне кажется, что Вам надо просто подтянуть эту линию к питанию каким-нибудь резистором, и тогда сможете писать и 0 и 1.
-
Ищу рабочую Spice модель микросхемы CD4046
ANT опубликовал тема в Библиотеки компонентов
В Инете нашёл какую-то сырую модель от Orcad, втащил в Microcap 7, пришлось чуть-чуть подправить синтаксис. Но не работает: VCO не генерит, на выходе фазового детектора - ноль. У когого-нибудь есть проверенная модель? -
Большое спасибо за подсказку. Вставка последовательно резисторов 20к в цепь SCL и 510 ом в цепь SDA полностью решила проблему.
-
Поставил FM31256 в качестве часов. Пока часы опрашивал редко, не замечал неточности хода. Когда стал опрашивать раз в секунду, стали отставать на пару минут в сутки. У кого-нибудь был такой эффект? Кварц пока не заменял, может с ним что-то случилось.
-
Уже несколько лет заказываю у них 2-сторонние платы. Качество приличное- как у Резонит на импортных материалах. Сроки выдерживают, срывов практически не было. К сожалению, несколько месяцев назад подняли цены, но мой повторный заказ сделали по старым ценам, что приятно.
-
Терминация LVPECL
ANT ответил aosp тема в от ТТЛ до LVDS здесь
Вот, нашел толковые рекомендации по этому поводу. Применение отрицательного 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 -
Терминация LVPECL
ANT ответил aosp тема в от ТТЛ до LVDS здесь
Для разных вариантов ECL нагрузку рекомендуют подключать к небольшому потенциалу около земли: NECL - к -2В, LVPECL - к +1,3В. Причем нагрузка - для эмиттерных повторителей (тянет ток от земли). На чем принято делать эти источники напряжения так, чтобы при большом количестве нагрузок в разных каналах не было взаимовлияния? -
Кто-нибудь пользуется RAPIDESIGNER-ом? Я попробовал сделать заказ у National Semiconductor. Не знаю, когда пришлют.
-
Попробовал несколько разных калькуляторов и формул для 4-слойки и зазора 0,2 мм. Получился разброс ширины проводника от 0,09 до 0,23 мм. Наверное, истина где-то посередине, примерно в районе 0,15 мм, как считает vin. Интересно, кто-нибудь измерял реальные значения импеданса на изготовленных платах?
-
Посчитал: 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 мм. Что же на самом деле?
-
Есть ли у кого посчитанные параметры дифф.пары?
ANT опубликовал тема в Работаем с трассировкой
Дифференциальные пары с нагрузкой 100 Ом, текстолит FR-4 1,5 мм. Вариант 1: двуслойная плата; вариант 2: 4-слойная плата. Может есть у кого-нибудь готовые значения для ширины дорожек, расстояния между проводниками пары и расстояния между парами. (Задача-то стандартная). -
Преобразователь NIM -> LVDS
ANT ответил ANT тема в от ТТЛ до LVDS здесь
Спасибо, видимо так можно сделать, но заказчик по каким-то соображениям, против транзисторов, да и время поджимает. Теперь еще одна проблема: сигналы LVDS нужно выводить на разъем VHDCI-68 (Ultra SCSI-2) с мелким шагом. Расстояние между падами - 0,4 мм. Т.е. норма зазор/проводник 0,13/0,13. Где такое могут изготовить? -
Преобразователь NIM -> LVDS
ANT ответил ANT тема в от ТТЛ до LVDS здесь
Как я понимаю, NIM - это NECL? Есть Application Notes за номером AN-1568 от ONSemi о сопряжении ECL и LVDS. В Вашем случае, если надо работать только с ВЧ сигналом, я бы применил трансформатор с соответствующими цепями смещения. Можно поставить дифференциальный каскад - чуть более громоздко, но тоже приемлемо - лучше, чем дополнительный преобразователь NECL -> LVPECL. <{POST_SNAPBACK}> NIM - это не совсем NECL. 0В - логический ноль, -0,8В на нагрузке 50 Ом - логическая единица. Переведу уровень компаратором MAX9693, а дальше сделаю как в AN-1568. Спасибо. -
Выходы P0 - с открытым стоком, их надо притянуть к питанию какими-нибудь резисторами.
-
Преобразователь NIM -> LVDS
ANT опубликовал тема в от ТТЛ до LVDS здесь
Задача - сделать преобразователь NIM -> LVDS. При этом вносимый джиттер должен быть минимальным. Предлагают цепочку NIM -> LVPECL -> LVDS (MAX9693 -> MC100LVEL90 -> SN65LVDS100D). Не знает ли кто-нибудь другой вариант, покороче? -
В новой версии (2.10) обнаружился баг, которого не было в предыдущей. Из-за него не инициализировалась карта. В файле sd_cmd.c 2 раза повторяется строчка SPSR=0x01; тогда как во 2 раз должно быть SPSR=0x00; Обнаружил, сравнивая между собой версии.
-
У меня под XP не работает, точнее работает со сбоями. Ипользую Avreal, когда JTAG-ICE почему-то перестает видеть Мегу. Если запустить Avreal и считать фузы, то после этого оживает JTAG.
-
В хелпе 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);
-
Так получается закорючка. Правильно проходит только прямое указание ASCII кода lcd_putchar (0xAC);
-
Насчет строковых констант все ясно, а как быть с символьными константами типа 'Ш' или 'Ю'?
-
Большое спасибо, помогло! А терминалке у меня был выставлен фонт в кодировке OEM/DOS. При установке фонта в кодировку cyrillic всё стало отображаться правильно.
-
В строковой константе все видно нормально, а при выводе на терминалку через последовательный порт - латиница нормальная, а вместо кириллицы - закорючки. Не говоря уже об LCD. В других компилляторах пользовался самодельными программами для LCD, с перекодированием, а как красивее сделать для CV? C терминалками проблем вообще не было.