Fallout 0 Жалоба Опубликовано 28 сентября, 2006 Опять таки возвращаясь к этой теме.... никак понять не могу.... :( вот в эмуляторе Proteus (среда эмуляции такая для разработки эмулирует многие элементы включая ПИКи АВР АРМ и тд )я загружаю прошивку запускаю и смотрю что на 4Мгц ПИК не успевает при передачи ловить синхро спады от замка (просто прозваниваю в цикле ножку пока не будет 0 ... )(замок пока тоже на ПИКе сделал) если делать все чисто на прерываниях то удаеться поймать спад но выставить бит удаеться только на 25 микросекунде после спада... а надо почти сразу (10 микросекунд после спада судя по даласовскому даташиту ) вот и вопрос.... к автору с которым уже имел честь общаться...... как так... может просто эмулятор у меня не правильно все эмулирует ...... или ещё чего но неудаеться вовремя выставить бит на шину... получаеться что мастер устройство читает бит раньше чем выставляю и получаються одни 1 соотсвено.... если интересно привожу свой код на HI-TECH C ( 9.50 PL2 последний вообщем ) под PIC12F629 ..... компилятор генерирует очень хороший код .... так что его жучить думаю не надо ибо проверка той же ножки такая же как если писать на ассме.... генератор внутренний.... сброс тоже внутренний... все остальнео отключено.... (сабака, сброс по упадку питания ...и тд) ~ импульс сброса ловлю в прерывании потом просыпаюсь и смотрю если умпульс был от сброса делаю... своё дело.... если поставить внешний генератор 20Мгц.... то бишь одна инструкция будет выпонятся за 200нано секунд против 1 микросекунды при 4Мгц внутреннем... то тогда да все рбаотает все успевает.... (в эмуляторе) .... да да да понимаю счас будут ответы типа а ты собери что на сайте все естьи п рошивка и тд и тп.... ну это понятно но все же мне инетресно почему же не хочет рбаотать....вот я и думаю блин как же таблетка так быстро на все реагирует..... при чтении мой эмулятор замка.... выдает синхро спад... длительностью в 1-3 микросекундуы... хм... вот хотя должен минимум 6.... Ж) но опять таки с обычной таблеткой работает .... B) или прсотом не нечего бояться собирать реальное устрйоство и оно будет пахать как надо? если надо в асм коде выложу те куски которые интересуют людей..... для тех кто сомниваеться в качестве комплиятора =) может у кого естьр еальные интервалы для с замка... ибо если 6 микросекунд будет синхро спад импульс то все будет пахать устойчиво и на 4Мгц а то при 1-3 то ловит то не ловит =( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 28 сентября, 2006 Бр... Когда люди хотели построить Вавилонскую башню, чтобы забраться на небеса к богу, он сделал несколько языков и "строители" перестали понимать друг друга... признаюсь, что я ламер в HI-TECH и С, и лишь отдалённо понимаю что там в коде написано, сам пишу всё на ассемблерере.. вообщем начну с описания как это происходит у меня, с временными задержками, посмотри, и разъясни, в каком месте у тебя камень предкновения:для экономии энергии WDT отключён !!!Итак, спимПри изменении состояния просыпаемся, смотрим линию, если проснулись и на линии лог 1 то ждём 25 мкс, при этом успеваем загрузить все байты ключа в озу.. (датшит= 15-60) и выдаём 0 - импульс присутствия. держим его 130 мкс (датшит= 60-240)(если, проснувшись обнаруживаем на линии 0, то считаем, что это "глюк" и идём снова спать.)итак, отпустив шину от импульса присутствия мы через 8-10 мкс проверяем её на наличие 1. эта единица будет означать окончание передачи первого байта мастером (домофоном) команды 33H. Скорее всего, эта единица появится только спустя 30 или больше мкс, но в любом случае она появится, когда закончится передача. при этом проверка шины у меня идёт с периодичностью 6 мкс (тратится 3 мкс на защиту от зависона, если связь с мастером прервётся, ведь WDT-то отключен).После появления 1(конец передачи), ждём появления нуля, уже через 6 мкс. (в датшите сказано 1-15 держится 0, после чего выставляется бит).Так как мы ещё не все биты от команды 33H приняли, поймав 0 (его ловим с периодичностью 2 мкс, так как тут защита не нужна, на линии же 1 держится, пропадёт ведь когда нибудь!), ждём 20 мкс и снова ждём появление "1"-конца передачи. так делаем 8 раз, тупо пропустив команду 33H... :rolleyes: Итак, после появления последней "1", мы переходим к передаче кода, при этом уже готовы выставить бит, ожидая появление "0", строчкой ask0 btfsc GPIO,0 goto ask0; То есть, сканируя шину каждые 2 мкс.после появления 0 мы выставляем бит уже через 6 мкс ( то есть выводим 0)если нужо выставить 1 то ничего не делаем, сама появится, тупо ждём 20 мкс и опять идём в ожидание 0. (Этот 0 выставит мастер, когда прочтёт с шины 1.)Если же мы выставили 0, то ждём 20 мкс (по датшиту нужно держать 15-60 мкс) и отпускаем шину. после чего, ждём 20 мкс и идём в ожидание "0".(вот особый момент - если не подождать, и перейти в ожидание 0 сразу, то шина из за ёмкости, не успеет перейти в 1, и возможен ложный приём стартового "0", коим является лишь "эхо" выставленного вами 0 - помню, я долго с этим глюком "парился").Вот так вот мы и передаём весь код. Всё успеваем, на 4 мгц ;) Почему у тебя выставить код получается только спустя 25 мкс? действительно поздновато! максимум 15. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Fallout 0 Жалоба Опубликовано 29 сентября, 2006 Угу понятненько я правдо все по честному делаю принимаю 33h а потом и передаю.... 20 - 25 микросекунд это когда я ловлю 0 прерыванием по спаду.... когда так же как и ты звоню ножку.... то нормально ..... устанавливаю бит быстро.... есдивено вопрос...... когда мастер ожидая бита выводит ноль на линию сколько этот 0 держиться?.... если 4-5 и более микросекунд сооственно то на 4Мгц думаю успею...... прсото даташит дата шитом а настоящая таблетка у меня и 2 микросекунды ловила..... а на пичке иногда можно "проскочить" А так спасибо за ответ.... ассемблер хорошо конечно знать ... но Си более портабельный не думаешь потом когда чип меняешь особо долго.... Сабака отключена у меня =) ладно значит будем проверять в реальности.... надеюсь домофон не подкачает.... вот поглядел на схему у тебя ножка подтянута GPIO0(5) подтянута к 0 через 22к резистор ... как я понимаю ты таким образом хочешь быть уверен в появлении 1 на линии... и 0 если устройство не подсоединено?.... но при этом у тебя уже на нуле сидит через 100пик ножка GPIO1(4) а это зачем?,.. и зачем все оставшиеся ножки ( 3,8) заведены на питание? У меня алгоритм такой: после конфигурации прирывания GPIO2 только по спаду.... засыпаю..... когда происходит прерыания жду 300 микросекунд, читаю порт если на линии все ещё 0... значит был резет устанавливаю переменную OWSF в 1.... после слипа проверяю.... ага единичка стоит значит был резет после чего while( OWDATA == 0 ); циклюсь .... тежи две микросекунды... как у тебя только жду единички.... конец имульса сброса..... жду 30 микросекунд конфигурирую порт на выход и устанавливаю 0 на нем.... в течении 120микросекунд.... после этого конфигурирую ИО как вход и жду пока не будет 1 ... тоже чтоб не попасть на якобы ноль при чтении битов с мастера.... шина поднялась значит 1 на линии..... попадаем в цикл в котором жду 0 после нуля жду 30 микросекунд чтоб уж точно мастер установил бит и читаю его... после чего сдвигаю бит вправо и так 8 раз потом провреяю если это 33h то идем дальше ,а если нет то засыпаем..... после в цикле тоже ловлю 0 и выставляю биты на линию... после чего выхожу из функции и засыпаю... опять таки ожидая нового резета.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 29 сентября, 2006 Сколько 0 держится точно не знаю, наверно у разных контроллёров по разному будет, но даже если импульс контроллёр выдаст по датшиту, то стоит как минимум пару микросекунд прибавить - время, пока шина переёдёт в 1 больше, веть 0 формируется открытым каналом транзистора а 1 лишь подтягивающим резистором (обычно 4,7к к +5В.) Так что в реальности поймать 0 успеешь запросто.Собирай, и всё "пойдёт".. ;) У меня резюк подтягивает ножку к минусу, как ты и сказал, чтобы держался 0, иначе напруга будет "гулять", а это плохо сказывается на потреблении, будешь нести в кармане, и статическое напряжение будет накапливаться. А все остальные выводы у меня подтянуты к +, там кондёр на 0,1 мкф это по питанию. У 200-го пика 2-й вывод это масса, а 5-й вывод это +пит. ( а откуда ты 8-ю ногу взял? там их всего 6! ЭТУ ли ты схему смотришь?) Можно подтянуть и к 0, без разницы, но подтянуть нужно обязательно, а то будет как я описал, нестабильный логический уровень, который будет приводить в переключению входных триггеров, и пик будет зря жрать ток. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Fallout 0 Жалоба Опубликовано 1 октября, 2006 Сколько 0 держится точно не знаю, наверно у разных контроллёров по разному будет, но даже если импульс контроллёр выдаст по датшиту, то стоит как минимум пару микросекунд прибавить - время, пока шина переёдёт в 1 больше, веть 0 формируется открытым каналом транзистора а 1 лишь подтягивающим резистором (обычно 4,7к к +5В.) Так что в реальности поймать 0 успеешь запросто.Собирай, и всё "пойдёт".. ;) У меня резюк подтягивает ножку к минусу, как ты и сказал, чтобы держался 0, иначе напруга будет "гулять", а это плохо сказывается на потреблении, будешь нести в кармане, и статическое напряжение будет накапливаться. А все остальные выводы у меня подтянуты к +, там кондёр на 0,1 мкф это по питанию. У 200-го пика 2-й вывод это масса, а 5-й вывод это +пит. ( а откуда ты 8-ю ногу взял? там их всего 6! ЭТУ ли ты схему смотришь?) Можно подтянуть и к 0, без разницы, но подтянуть нужно обязательно, а то будет как я описал, нестабильный логический уровень, который будет приводить в переключению входных триггеров, и пик будет зря жрать ток. Спасибо ... а по поводу 8 ног ну смотря какой корпус =) если SOT23-6 то да 6 ног Ж) сегодня именно и отпишусь .... если все будет удачно схемку кину.... и фото устройства кину... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Fallout 0 Жалоба Опубликовано 1 октября, 2006 Не поленился собрал ридер этих таблеток..... вроде все в связки читалка таблеток / эмулятор пашет сегодня проверю на домашнем домофне в "живую" так сказать... едивенно что заметел.... что таблетка реальная нормально работает если в ноль уход при приеме/передаче мастером 1-2 микросекунды.... забавно ... видемо дейсвительно жесткая логика.... но все ровно удивлен..... эмулятор спад в 1 микросекунду часто пропускает..... а если по даташиту то все ОК.... ну ладно завтро постараюсь отписать.... как прошли испытания :rolleyes: Проверил вчера работает все как часы.... спасибо за помощь..... выложу позже исходный код последний благо Си портабелен очень и можно с небольшими переделками использовать везде..... ну и схему и фотку.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 2 октября, 2006 Не поленился собрал ридер этих таблеток..... вроде все в связки читалка таблеток / эмулятор пашет сегодня проверю на домашнем домофне в "живую" так сказать... едивенно что заметел.... что таблетка реальная нормально работает если в ноль уход при приеме/передаче мастером 1-2 микросекунды.... забавно ... видемо дейсвительно жесткая логика.... но все ровно удивлен..... эмулятор спад в 1 микросекунду часто пропускает..... а если по даташиту то все ОК.... ну ладно завтро постараюсь отписать.... как прошли испытания :rolleyes:Проверил вчера работает все как часы.... спасибо за помощь..... выложу позже исходный код последний благо Си портабелен очень и можно с небольшими переделками использовать везде..... ну и схему и фотку....Ну вот, а ты болялся... ;) Схемка и код будет очень кстати, выкладывай. ( Если что, то сюда можно не только рисунки но и .ZIP архивы прикреплять.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Fallout 0 Жалоба Опубликовано 3 октября, 2006 :P Итак контроллер применял PIC16F629 ну ибо такой только был.... в схеме по мимо него батарейка CR2032 .... один резистор на 15 - 100Ком для поддтяжке ножки данных что бы в воздухе не весела.... ножка сброса так как я использую внутрений сброс.... она свободна но по даташиту сказано она не может быть как выход поэтому можно её через резистор к чему нибудь подтянуть либо вообще напрямую к + или - соотсвенно..... остальные ножки у меня как выход сконфигурированы и на них логический 0.... хоят их можно тоже на вход сконфигурировать и притянуть к чему нибудь..... Исходный Си код под HI-TECH C На базе этого сделаю законченный вариант где свободные 4 ножки будут управлять чип светодиаодами... а ножка сброса которая только как вход работает будет собстно кнопка.... таким образом будет устройства размером 2на2см.... на 16 ключей.... фотографии этого и следующего устройства позже... Схема все ноги неиспользуемые на землю Схема под текущий код когда только сброс как вход Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Fallout 0 Жалоба Опубликовано 5 октября, 2006 А вот и обещаная фотка .. сверху все залито эпоксидной смолой ибо собрано проводами на мантажке... :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
технарь 0 Жалоба Опубликовано 7 ноября, 2006 Прошу прощения, что не совсем по теме....Есть перепрограммируемый контролер (от "умного замка") PIC12F629. Вроде должен перепрошиваться, но ничего не получается. Бит защиты естестественно стоял, но я думаю, что он защищает только прошивку, а затереть программу и перепрошить кристал даст без проблем. Или я неправ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Igor-san 0 Жалоба Опубликовано 7 ноября, 2006 Прошу прощения, что не совсем по теме....Есть перепрограммируемый контролер (от "умного замка") PIC12F629. Вроде должен перепрошиваться, но ничего не получается. Бит защиты естестественно стоял, но я думаю, что он защищает только прошивку, а затереть программу и перепрошить кристал даст без проблем. Или я неправ?Если стёр, то можешь записать новую прошивку.А что не получается? Стереть, записать или не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гость Гость Жалоба Опубликовано 7 ноября, 2006 Стереть вроде стёр, но нифига не пишет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Igor-san 0 Жалоба Опубликовано 8 ноября, 2006 Стереть вроде стёр, но нифига не пишет.Должен, если програматор исправен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
технарь 0 Жалоба Опубликовано 9 ноября, 2006 Во первых как то странно - стереть то стёр, а писать не хочет. Ну а что касается программатора - микросхемы флешпамяти (24с64) то программирует без проблем, а значить можно предположить что железо в программаторе исправно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 10 ноября, 2006 Во первых как то странно - стереть то стёр, а писать не хочет. Ну а что касается программатора - микросхемы флешпамяти (24с64) то программирует без проблем, а значить можно предположить что железо в программаторе исправно.для флешь памяти не используется +13 вольт. возможно оно занижено или выдаётся не тогда когда нужно. пробуй на других пиках, если с ними всё нормально, значит умер. Такое у меня пару раз случалось. Причём посмотри, у меня было так, что без пика +13 выходило, а пик как вставлю-нагрузка на ногу такая, что падало сильно. значит пик неисправен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
технарь 0 Жалоба Опубликовано 10 ноября, 2006 Хорошо, попробую, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
dimmm38 0 Жалоба Опубликовано 9 января, 2007 :P Итак контроллер применял PIC16F629 ну ибо такой только был.... в схеме по мимо него батарейка CR2032 .... один резистор на 15 - 100Ком для поддтяжке ножки данных что бы в воздухе не весела.... ножка сброса так как я использую внутрений сброс.... она свободна но по даташиту сказано она не может быть как выход поэтому можно её через резистор к чему нибудь подтянуть либо вообще напрямую к + или - соотсвенно..... остальные ножки у меня как выход сконфигурированы и на них логический 0.... хоят их можно тоже на вход сконфигурировать и притянуть к чему нибудь..... Исходный Си код под HI-TECH C На базе этого сделаю законченный вариант где свободные 4 ножки будут управлять чип светодиаодами... а ножка сброса которая только как вход работает будет собстно кнопка.... таким образом будет устройства размером 2на2см.... на 16 ключей.... фотографии этого и следующего устройства позже... Схема все ноги неиспользуемые на землю Схема под текущий код когда только сброс как вход А куда прописывать код моего DS19990 ?unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };в эту строку в исходнике ?Пожалуста объясните непонятливомуИ вообще с нетерпением жду законченный вариант Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 9 января, 2007 А куда прописывать код моего DS19990 ?unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };в эту строку в исходнике ?Пожалуста объясните непонятливомуИ вообще с нетерпением жду законченный вариантИменно, сюда! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
dimmm38 0 Жалоба Опубликовано 12 января, 2007 А куда прописывать код моего DS19990 ?unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };в эту строку в исходнике ?Пожалуста объясните непонятливомуИ вообще с нетерпением жду законченный вариантИменно, сюда! У меня код00000B7E9BA9как должна выглядеть тогда эта строка?А то я не программист, а эмулятор очень хочется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel 582 Жалоба Опубликовано 12 января, 2007 А куда прописывать код моего DS19990 ?unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };в эту строку в исходнике ?Пожалуста объясните непонятливомуИ вообще с нетерпением жду законченный вариантИменно, сюда! У меня код00000B7E9BA9как должна выглядеть тогда эта строка?А то я не программист, а эмулятор очень хочется.{ 0xХХ, 0x00, 0x00, 0x0B, 0x7E, 0x9B, 0xA9, 0x01 };ХХ-написано слева над кодом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гость Гость Жалоба Опубликовано 8 июня, 2007 :P Итак контроллер применял PIC16F629 ну ибо такой только был.... в схеме по мимо него батарейка CR2032 .... один резистор на 15 - 100Ком для поддтяжке ножки данных что бы в воздухе не весела.... ножка сброса так как я использую внутрений сброс.... она свободна но по даташиту сказано она не может быть как выход поэтому можно её через резистор к чему нибудь подтянуть либо вообще напрямую к + или - соотсвенно..... остальные ножки у меня как выход сконфигурированы и на них логический 0.... хоят их можно тоже на вход сконфигурировать и притянуть к чему нибудь..... Исходный Си код под HI-TECH C Ребята, если не трудно, скомпилируйте мне этот исходник. А то с моей скоростью инета я еще неделю буду компилятор тянуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Гость keer Жалоба Опубликовано 16 ноября, 2007 А куда прописывать код моего DS19990 ?unsigned char IBKEY[] = { 0xDC, 0x00, 0x00, 0x0D, 0xA4, 0x1D, 0xC3, 0x01 };в эту строку в исходнике ?Пожалуста объясните непонятливомуИ вообще с нетерпением жду законченный вариантИменно, сюда! У меня код00000B7E9BA9как должна выглядеть тогда эта строка?А то я не программист, а эмулятор очень хочется.{ 0xХХ, 0x00, 0x00, 0x0B, 0x7E, 0x9B, 0xA9, 0x01 };ХХ-написано слева над кодомПростите а чем копилили сорц mplab'e Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
IRF840 0 Жалоба Опубликовано 8 января, 2008 А где взять файлы htc.h , delay.h (в программе #include <htc.h>,#include "delay.h" , для PIC12F629 ?). Без них не компилится . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
hokerman 0 Жалоба Опубликовано 8 апреля, 2008 Эмулятор таблетки домофона DS1990A на Pic12F629 Вот прошивка с возможностью подтстановки своего номера таблетки без перекомпиляции. http://vrtp.ru/index.php?showtopic=8479 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Вступить в беседу
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.