Сделал еще один двухдневный подход к i2c slave на PIC. Сил и нервов уже никаких не осталось. Ладно, к делу. Есть сетап: pic18f25k22 читает байт из i2c, пишет на его место другой байт, читает снова и сверяет записанное и прочитанное.
Функция чтения: старт - байт адреса+бит записи - запись адреса регистра - рестарт - байт адреса+бит чтения - чтение значения регистра - стоп. Функция записи - старт - байт адреса+бит записи - запись адреса регистра - запись значения в регистр - стоп.
Функции проверены-перепроверены на датчике цвета, предполагается, что этот поллер нормально работает. Когда слейв от него отключен, он спокойно пуляет в пустоту адреса, ничего не получает и т.д. Подключаем слейв - поллер тыркается в него и зависает.
Теперь слейв - pic16f1827. Все на прерываниях, пять условий в соответствии с AN734. В каждом условии сделал выгрузку в УАРТ одного байта. Судя по этой отладочной информации, первое и последнее условие, в которое попадает обработчик прерывания - это условие №3 - STATE 3: MASTER READ, LAST BYTE WAS AN ADDRESS • S = 1 (Start condition occurred last) • R/W = 1 (Master reading data from the slave) • D/A = 0 (Last byte was an address) А, да, еще важно - включен слейв-режим семибайтный с прерываниями на старте/стопе.
//SSP1CON3 = 0b00011000; SSP1CON3bits.BOEN = 1; //1 = SSPxBUF is updated and ACK is generated for a received address/data byte, ignoring the //state of the SSPxOV bit only if the BF bit = 0. SSP1CON3bits.SDAHT = 1; //1 = Minimum of 300 ns hold time on SDAx after the falling edge of SCLx SSP1CON3bits.AHEN = 0; SSP1CON3bits.DHEN = 0;
Ребят, надоело работать без инструмента - строю PICKit Serial Analyzer. Хочу заменить несколько компонентов на, как мне кажется, аналоги. Подскажите, можно ли?
Ребята, пытаюсь понять, почему же у меня анализатор не выдает напряжение в схему. На картинке кусок каскада, формирующего напряжение на таргете. Когда мы в ГУЕ включаем напряжение, МК шимит свой выход и в т. А устанавливается напряжение в зависимости от желаемого - от 40мВ до 3В. При этом ОУ никак не реагирует и на его выходе всегда 5В. Из того, что я читаю вот тут: http://easyelectronics.ru/operacionnyj- ... l#more-367, при росте напряжения на инвертирующем входе, напряжение на выходе должно в какой-то момент грохнуться и транзистор должен открыться. Этого не происходит. Помогите, ПЛЗ, понять, в чем дело.
R9-10-11 эпохальный шедевр схемотехники от микрочипа ! 3 резистора конечно лучше 2-х.
Добавлено спустя 4 минуты 29 секунд:
dccharacter писал(а):читаю вот тут: http://бредни про электронику.ru Этого не происходит. TL082C
На ОУ и полевике сделан усилитель напруги конденсатора на 2. На затворе будет тем меньше напруга ( ОУ должен его открывать ) чем она больше на конденсаторе и чем сильнее нагрузка с полевика на землю. Либо контакты проверяйте, либо поставьте правильный рэйл ту рэйл ОУ mcp60xx
На выоде этого ОУ 5 вольт вообше не должно быть при 5 вольтовом питании и какой либо минимальной нагрузке.
Поставьте резитор 1-4 кОм с выхода ОУ на землю чтоб нагрузить его.
"нагрузил". этот резистор притягивает выход к земле, транзистор постоянно открыт и на выходе 4,7В...
про три резистора - я один еще вчера отпаивал, "приводя" схему к референсной дихальта. Не помогает.
"правильный" ОУ ставить - надо, но жалко: такая платка получалась красивая...
Добавлено спустя 11 минут 18 секунд: avr123, а зачем вообще эта морока с внешним ОУ? Почему нельзя компаратор в МК использовать, например? Ножкой дерг-дерг, транзистор открылся-закрылся????
Добавлено спустя 7 минут 10 секунд: О, а вот эта штука чудесным образом совпадает по пинауту: AD8542 ARMZ 50 рублей восхитительный операционный усилитель сдвоенный.
Добавлено спустя 3 минуты 13 секунд: оооооооооо MCP6002.... ыыыыыы... у кого есть рядом с Красногорском МО? ))
Добавлено спустя 3 часа 55 минут: Впаял MCP6022 - все заработало. Ае!!!! ХА ХА ХА Теперь у меня есть анализатор. Ьудем им дальше потрошить i2c slave.
О, как интересно. При подключении нагрузки вырубается USB порт. Выпаял джампер R6, на его место впаял резистор 68 Ом. Заодно выкинул R11 - частично ради интереса. Все работает
Starting ...Writing 0x8C to 0x05... done. Reading value...0x8C... OK! Starting ...Writing 0x5B to 0x05... done. Reading value...0x5B... OK! Starting ...Writing 0x84 to 0x05... done. Reading value...0x84... OK!
Короче, проблема была в том, что AN374 уже достаточно старый и не содержит информации о том, что логика MSSP модуля в PIC16F1827 (а может, и во всех новых ПИКах) была обновлена вслед за ПИК18. В частности, после приема адреса МССП модуль всегда пихает его в буфер. В результате поднимается флаг, который, если все делать по аппноуту, тестируется как уроненный, и мы пролетаем мимо запроса на чтение.
И все-таки, не совсем работает мой анализатор (т.е. логика-то вся ОК, а вот ВДД - не работает). авр123, помоги дожать его ПЛЗ. Симптомы: 1. Если на место R6 впаян джампер, а к модулю подключается нагрузка, то на напряжениях выше ~3.5В USB порт вырубается (судя по всему срабатывает защита). 2. Если на место R6 впаян резистор 68 Ом, то без нагрузки на выходе 5В, при подключении нагрузки просаживается до 3,4В. 3. МК в анализаторе всегда занижает реальное напряжение (на выходе 4,7В, в ГУЕ показывает 4,3-4,4В).
Среди возможных причин - замена диода ZHCS1000 на SS14 ???
Добавлено спустя 7 минут 5 секунд: Вроде диоды похожи как близнецы-братья... Не должно быть в них дело-то.
dccharacter писал(а): 1. Если на место R6 впаян джампер, а к модулю подключается нагрузка, то на напряжениях выше ~3.5В USB порт вырубается (судя по всему срабатывает защита).
нагрузка то какая ? С малой нагрузкой ( не более 100 мА) нормально работает ?
dccharacter писал(а):2. Если на место R6 впаян резистор 68 Ом, то без нагрузки на выходе 5В, при подключении нагрузки просаживается до 3,4В.
все верно, на резисторе напруга падает.
dccharacter писал(а): 3. МК в анализаторе всегда занижает реальное напряжение (на выходе 4,7В, в ГУЕ показывает 4,3-4,4В).
НАверно надо калибровку делать как в PicKit2.
Добавлено спустя 6 минут 57 секунд:
dccharacter писал(а): avr123, а зачем вообще эта морока с внешним ОУ? Почему нельзя компаратор в МК использовать, например? Ножкой дерг-дерг, транзистор открылся-закрылся????
пульсации получаться большие, а на ОУ с полевиком выполнен усилитель напряжения в 2 раза.
dccharacter писал(а): 1. Если на место R6 впаян джампер, а к модулю подключается нагрузка, то на напряжениях выше ~3.5В USB порт вырубается (судя по всему срабатывает защита).
нагрузка то какая ? С малой нагрузкой ( не более 100 мА) нормально работает ?
Ставил светодиод с резистором 100 Ом, мультиметр показывал около 30мА (через нагрузку). На входе сериал анализатора не смотрел - дорожки рвать надо. Мож подкорачивает что???? И когда транзистор полностью открывается, ток на нагрузке-то в районе 30мА, а куда-то еще мА 100 стравливается. И порт уходит в аут?
Продолжаю думать над схемой, смотрю на выходной каскад. Когда у нас подано напряжение на таргет, у нас получается, что Vdd_TGT внутри нагружен на землю диодом D2 плюс резистором R25 (820 Ом). Т.е. у нас получается источник напряжения, в котором R1 = R6+Rк, а R2 = Rдиода+R25. Как включили нагрузку, R2 меняется и напряжение на выходе плывет. Будет ли такой эффект, если замыканий в схеме нет? Или у меня скорее всего где-то что-то подкорачивает?
======== Похоже вместо полевика у вас p-n-p биполярный слабый. И ОУ пытается через Б-Э просадить питание для его открытия. ======== На схеме в посте 847 в провод "С" можно воткнуть шоттки аналогичный тому что уже используется и R11 сделать 1 кОм - так мы компенсируем падение на шиоттки.
Выпаял конденсатор С10, и впаял на его место выводной электролит. И сейчас PKSA тянет две схемы и не перегружает порт. Че за фигня?
Добавлено спустя 3 минуты 32 секунды: А, нет, еще смешнее. При выпайке С10 оборвал дорожку к С11.ю который, соответственно, выпал из схемы. И перезагрузка прекратилась. Точнее так: при подсоединении нагрузки, PKSA перегружается, но после этого все тянет.
Добавлено спустя 13 минут 40 секунд: блин. похоже тупо кондер вылетел
Добавлено спустя 6 минут 28 секунд: оба десятимикрофарадных кондера были дохлые. е-маё, не все, что с балкона - годное. тьфу ты.