![]() |
пока не переделал, но пробывал в эту цепь засовывал один элемент от 561ой, те же яйца только в профиль
у меня возникает подозрение счетчик погорел от эксперементов |
В 561 микрухе элемент не инвертирует!!!! А тебе надо инвертировать выход счетчика!!!! Сделай как я нарисовал.
|
как сгорела? А если 2 и 3 ноги отключить от 11, как ты делал, то работает?
|
утром буду пробывать:bye:
|
Вложений: 1
Цитата:
Кстати, для гарантированного формирования импульса по спаду можно добавить два резистора R2 и R3. Если R1 - 1K, то R2 - 2K, R3 - 1K (вроде бы так). Тогда вход - 12В. |
А есть еще один вариант (на современной элементной базе :-))). Один корпус ATTiny11 или ATTiny12.
Это - исходник прошивки: 8<----8<----8<----8<----8<----8<----8<----8<---- .include "TN11DEF.INC" ; include chip definition ;------------------------------ .def temp1=r16 .def temp2=r17 .def temp3=r18 .def PulseFlag=r19 .def Counter=r20 ;------------------------------ rjmp RESET ; Reset Handle rjmp INT0VECT ; External Interrupt0 Vector Address rjmp NOVECT ; Pin change Interrupt Vector Address rjmp OVF0VECT ; Overflow0 Interrupt Vector Address rjmp NOVECT ; (EEPROM ready Interrupt Vector Address ATTiny12) Analog Comparator Interrupt Vector Address ATTiny11 rjmp NOVECT ; Analog Comparator Interrupt Vector Address ATTiny12 ;------------------------------ RESET: ; init timer ldi temp1, (1< ldi temp1, (1< ; init int0 ldi temp1, (1< ldi temp1, (1< ; init ports ldi temp1, (1< ; init val ldi PulseFlag, 0 ldi Counter, 4 ; enable interrupts sei ;------------------------------ MAIN: rjmp MAIN ;------------------------------ OVF0VECT: in temp1, SREG ; Store the Status register in reg temp1 dec Counter brne EX_OVF0VECT ldi Counter, 4 ; here's approx 1sec delay tst PulseFlag breq CLRPINB0 dec PulseFlag mov temp3, PulseFlag andi temp3, 1 breq CLRPINB0 sbi PORTB, PINB0 rjmp EX_OVF0VECT CLRPINB0: cbi PORTB, PINB0 EX_OVF0VECT: out SREG, temp1 ; Restore Status register reti ;------------------------------ INT0VECT: in temp2, SREG ; Store the Status register in reg temp2 tst PulseFlag brne EX_INT0VECT ldi PulseFlag, 4 EX_INT0VECT: out SREG, temp2 ; Restore Status register reti ;------------------------------ NOVECT: reti 8<----8<----8<----8<----8<----8<----8<----8<---- 4-я нога - земля, 8-я нога - питание, на 6-ю ногу через резисторный делитель подать сигнал вкл/выкл заднего хода, с 5-й ноги снимать импульсы. Итого - 3 детали :-) два резистора, одна микросхема (всего о восьми ногах), а не куча логики. |
Цитата:
программу сам написал? где взять программатор?:dntknw: |
Вложений: 1
Там писать нечего. ;-)
Программатор на COM порт: |
Вложений: 1
Но, сначала исходник надо скомпилировать. Я использовал VMLAB.
Потом уже заливать объектный код в микроконтроллер. Я использую программу uniprof. Здесь уже готовый для заливки скомпилированный объектный код: |
а в программе можно будет подправить длинну импульсов и длительность паузы между ними?
|
купил Attiny 11,(12ого не было в диповском корпусе) программа его не определяет, появилось подозрение что и не должна, т.к. у одинадцатого нет MOSI и MISO :dntknw: :angry:
http://www.gaw.ru/im/atmel/avr/attiny11_p.gif |
Вложений: 1
бл......, нашел список поддерживаемых устройств на сайте разработчика программы, там только двенадцатый.. твою мать... почему сразу это не увидел когда качал прогу.ууу..у.
завтра поеду искать tiny12 в дип-корпусе вот фотка програматора |
Beer100 ты уж извини, но твой проект пока отложен в сторону (на фотке его видно слева вверхнем углу). просто идея с микроконтроллером нескольео проще и стабильнее, чем логика.
|
Да, точно 11-й без SPI интерфейса. Я думал, что у всех есть... ;-(
Меняй на 12-й или какой другой более старший с SPI. Только более старшие могут быть с СОЗУ, там надо будет в программу добавить команды инициализации стека и поправить таблицу прерываний (если будут расхождения). В программе есть переменная PulseFlag в строке 'ldi PulseFlag, 4' (4 - это два импульса) начальная инициализация по смене состояния на "входной" ноге. Где стоит комментарий 'here's approx 1sec delay' - там он и означает, что задержка примерно 1 сек, то есть код ниже этого коммента запускается примерно через 1 сек. Регулируется переменной Counter, ldi Counter, 4 - это примерно 1 секунда, если написать ldi Counter, 2 - то будет 0,5 сек, далее по аналогии. То есть по смене состояния на ноге INT0 на ноге PB0 возникает два импульса длительностью 1 сек с паузами между ними в 1 сек. Можно переделать прогу, чтобы можно было настраивать отдельно паузы и длину. |
Вложений: 1
Готова новая прога. Заранее ее сделал под ATTiny12 (можно и для ATTiny11, если получится зашить :-)
В ней есть константы: 1. .equ PulseQuantityInitVal=2 2. .equ BeforePulseDelayInitVal=0 3. .equ PulseLongInitVal=2 4. .equ PulseSpaceInitVal=4 1. Кол-во импульсов (в штуках) 2. Задержка до выдачи импульсов (в 1/4 секунд) 3. Длительность импульсов (в 1/4 секунд) 4. Длительность паузы между импульсами (в 1/4 секунд) Все длительности в 0.25 секунды (примерно). Т.е. если 1 = 0.25 сек, 2 - 0.5 сек, 3 = 0.75 сек, 4 = 1 сек, итд до 255 = 63,75 сек. Это все в теории... На практике есть маленькая проблема по моим расчетам обработчик прерывания OVF0VECT должен срабатывать примерно через 0.22 сек: 1200000 / 1024 = 1172 / 256 = 4.6 => 1 / 4.6 = .22 sec, в реальности (на Attiny26) и на эмуляторе работает медленнее в 2 раза, т.е. 0.44 сек. Короче - хз, это вообще мой второй проект на МК :-). Первый здесь: http://www.pccar.ru/showthread.php?t=1721 Месяц назад я вообще ни разу не программировал эту хрень :-). Там все просто, если есть опыт программления на каком-нибудь другом ассемблере, то двух часов на изучение хватит, чтобы в основном разобраться. Но, вот как так получается с таймером - до сих пор не пойму. Здесь исходник и прошивка: |
Цитата:
Водь на дворе уже 21 век! :smile1: Это я так, по старинке на логике..... |
Цитата:
может я чегонить не так делаю?.... пробавал заливать этот файл и ипром и во флеш, и одновременно и туда и туда. не работает вход 6ая нога (активный +4,8В, после делителя), выход пятая нога, остальные в воздухе. PS первую версию тоже пробывал. ничего не происходит... |
Вложений: 1
И не запустится, просто я не сказал еще про одну фигню. В datasheet есть слова: "When the RSTDISBL fuse is unprogrammed, this pin serves as external reset. When the RSTDISBL fuse is programmed, this pin is a general input pin." Короче, если ты с этим чипом ничего не делал, кроме прошивки, то 1-я нога по-умолчанию - вход сброса. Без его подачи при включении счетчик команд в неопределенном состоянии. На эту ногу сигнал начального сброса подается также, как и на все остальные процессоры - резистор + конденсатор.
Шить надо во флеш. EEPROM - это чисто для данных. Flash - память команд. В этой программе EEPROM не используется. R1 - 100К C1 - 1мкФ R2 - 2К R3 - 1К Схема: |
Вложений: 2
я так и думал что нужен reset,
делитель сделал по другому немного, R2 и R3 по одному килоому, и стабилитрон на 4,7В, так будет на входе всегда одно и тоже напряжение, и при десяти и при пятнадцати вольтах бортового напряжения. http://pccar.ru/attachment.php?attac...1&d=1171515131 а это нормально то что после сброса (reset) на первой ноге будет постоянно висеть еденица? просто на разных процессорах используется разный reset http://pccar.ru/attachment.php?attac...1&d=1171515131 просто в программе uniprof используется первый вариант сброса, а ты предлогаешь второй |
Читаем Attiny11-12.pdf. Страница 5: "Reset input. An external reset is generated by a low level on the RESET pin." Соответственно, низкий уровень - сброс, высокий - работа. На странице 7 есть схема Figure 5, там именно то, что надо. Таблица 29 на странице 57 как считаются значения R и C и комментарий: "R should be in the range 3-100K, and C should be at least 20pF."
|
Кстати, только что вычитал на стр. 7, что при использованиии внутреннего RC генератора вследствие его чувствительности к наводкам PB4 желательно использовать, как выход. В соответствии с этим, на всякий случай, строку в коде:
ldi temp1, (1< ldi temp1, (1< Хотя - можно и не делать, мы же не считываем оттуда никакой инфы. В-общем - RTFM 8-))) |
Кстати, а ведь действительно со стабилитроном луше будет.
|
2 Mcf1 и _SDY_:
Ребяты, просьбочка большая - как будет отлаженный вариант - поделитесь :) Темка актуальна для большинства обитателей нашей песочницы, которые хотят автопереключение на камеру заднего хода. |
Цитата:
|
а контроллер не хочет работать даже с reset`ом, не пойму ни как в чем дело.
интересные наблюдения: при подаче питания на МК он потребляет 2 милиампера, после того пройдет reset от программы Uniprof он потребляет 4 мА. в плате где он должен уже поидее работать МК потребляет 2 мА, хоть с ресетом хоть без него, из чего хочется сделать вывод что он не запускается:angry: |
Вложений: 2
Короче, я не поверил, что этот код не работает, не поленился, съездил в магазин, взял ATTiny15 (он был на 2 рубля дешевле ATTiny12 :-). Его отличие от 11-го и 12-го:
1. у него 1,6Мгц внутренний RC-генератор, 2. вход INT0 - 7-я нога (у 11 и 12 - 6-я нога), 3. у него есть 4-х канальный ЦАП, компаратор (пришлось добавить в таблицу прерываний лишние две команды) 4. и еще один таймер Timer1 (тоже, добавлена лишняя инструкция перехода на "пустое прерывание"). Итого: исходник практически не изменился, только добавлены 3 перехода на "пустой" обработчик прерывания, в схеме вход перешел с ноги 6 на ногу 7. Прога скомпилена, зашита и СРАЗУ заработала. В-общем, ищи ошибку у себя. PS. Длительности импульсов/пауз я не менял - кто захочет, тот пусть сам и настраивает (я уже указывал нужные константы). |
Кстати, ты какой файл в МК заливаешь? Не asm случайно? 8-)
|
У меня есть предложение. Если в мониторе есть входы VGA, AV1, AV2, TV и индикация каждого режима сделана светодиодами, то можно ее использовать, как входной сигнал для контроллера переключения. Надо будет только прогу переделать.
Потому-что в текущей реализации (что на рассыпухе, что на одном МК) есть баг: допустим, я включу заднюю (контроллер начнет переключать монитор) и через секунду первую (или D на автомате) монитор останется в режиме "заднего вида". Если же сделать обратную связь с монитором (если индикация на светодиодах), то баги исключены и дае можно использовать для камеры заднео вида любой вход, хоть AV1, хоть AV2 и можно будет без проблем пользоваться режимом TV. |
Да, кстати, даже в случае реализации на простой логике как предлагал ранее я, то включение "задней" на одну секунду (а такое при маневрировании бывает часто), режимы переключеия монитора будут нарушены.
Надо вводить обратную связь от монитора и самое главное, данное устройство должно постоянно опрашивать положение ручки КПП. Хотя бы с переодичностью в 0,1 сек. Впринципе это тоже не сложно сделать.... PS Для машин с АКПП нужно добавить режим задержки в пол секунды. |
Monitor switcher
Вложений: 1
Набросал тут примерный вариант переключателя монитора с обратной связью (себе скорее всего так и буду делать, как будет монитор :-)
1. Rear camera - входной сигнал со светодиода (или еще откуда), что включена камера заднего вида 2. Front camera - входной сигнал со светодиода (или еще откуда), что включена камера переднего вида (для машин с правым рулем :-) 3. VGA - входной сигнал со светодиода (или еще откуда), что включен комп 4. Gear - входной сигнал, что включена задняя передача 5. Source select button - выходной сигнал для кнопаря выбора источника сигнала на мониторе (ну, там через транзистор или как н-ть) У входных сигналов 1-4 высокий уровень - активный. Т.е. если на 1-м входе единица, то выбрана камера заднего вида, если на 2-м, то - передняя камер, 3-м - комп, 4-м - включена задняя передача. Если на входах 1-3 низкий уровень, то считается, что включен TV. Входные сигналы для источников сигнала - это либо светодиодные индикаторы режимов монитора (если есть), либо какая-нибудь мелкосхема внутри монитора с нужными уровнями (если нет светодиодов и найдете нужную мелкосхему :-). Если до включения задней передачи был выбран какой либо источник, типа TV, передней камеры или компа, то после выключения задней передачи контроллер вернет монитор в предыдущее состояние. Реализована задержка включения камеры заднего вида для АКПП (Beer100 подсказал), т.к. R находится между P и "передними" передачами, чтобы лишний раз не включалась задняя камера. (0,51 сек) Реализована задержка выключения камеры заднего вида для маневрирований на стоянке и т. п., чтобы при частых переключениях между R и D лишний раз не переключался монитор. (6,8 сек) |
Monitor switcher
Вложений: 1
Этот вариант я не собирал (пока что не для чего). Думаю, работать должен сразу, как и предыдущий, только правильно собрать и найти на мониторе нужные сигналы. Возможно еще придется подобрать длительности импульсов на кнопаре переключения монитора и задержки включения/выключения "заднего" монитора.
Здесь исходник: |
Хитрое реле
Так и не понял, чем закончилась эпопея с кнопкой. НО!
Получил огромное удовлетворение от посещения http://avr.nikolaew.org :toomuch: ! На своем сайте что-то пытаюсь делать для популяризации программирования, но постоянно не хватает времени. NLM Респект!!! SDY тоже молодец, но как-то все “томные” программы получаются, уж извини, что со своими советами лезу. После подачи питания одновременно на LCD и на МК от тумблера ПК, МК сразу задерживается на 2_4 сек в длинном цикле –> потом включает ногу (“кнопку”) –> еще задерживается на 0.5_1сек –> выключает ногу -> и уходит на покой в бесконечный цикл. Все, 10-ть строк кода. А с прерываниями легко нарваться на осложнения… и не прозрачно. Проверь полярность работы кнопки, она может замыкаться на землю, а может и на +Vcc (внут. 3v или 5v), а лучше просто через оптопару параллельно кнопке. Rst вообще оставь в покое на воздухе. Не поленился сие написать только из большой любви к программированию:smile1:. Ведь эту задачу может решить и бипер в компе, он аккурат так и работает при включении. Но все равно настоятельно рекомендую осваивать МК – это очень просто! :thumbup1: |
2 eug_car: тот код, что ты описал (10 строк кода) - это для "Хитрого реле включения" :-) его просил сделать Wanted, тема уже давно ушла в сторону... А насчет кнопки, так mcf1 вроде бы сам должен разобраться, что к чему, схема, конечно не полная - все зависит от реализации кнопаря на мониторе.
|
Вложений: 1
купил ATTiny15, зашил, перепаял схему (вход на 7ую ногу), добавил микруху 4066 сделал правильный reset, и все заработало как надо
плату закрепил кЕтайскими соплями прмок плате управления хотел изменить время импульсов и паузу между ними в меньшую сторону, но...... пока не судьба, attiny15 двенадцати вольт не выдержал (случайно не посмотрел что выставлено на блоке питания) в понедельник куплю новый, буду пробывать именьшать PS to SDY ATTiny12 так и не заработал, ппочему не понятно, но все равно огромное спасибо, жил бы ты несколько поближе купил бы тебе пиво:beer1: |
схема заработала, переключает как надо, но радости нет:angry:
меня только что посетила мысль что для корректного использования камеры заднего вида нужно изображение перевернуть в зеркальное, наш NONAME этого не умеет. каким внешним девайсом это можно сделать? а может бывают камеры с изначально зазеркаленным изображением на выходе? если не будет зеркального изображения смысл этой затеи равен нулю, т.к. пользоваться будет не возможно |
Цитата:
|
спасибо,
|
А ты второй вариант переключателя не хочешь попробовать собрать? Тот, который с обратной связью. Более корректное переключение, приемущества я уже расписывал... Только вот надо найти, какая мелкосхема переключает режимы монитора.
|
хочу, только не получится, там все по цифре управляется, т.е. нет там такого что бы еденичка или нолик на какой либо ноге появилась взависимости от выбранного входа.
|
Цитата:
|
Часовой пояс GMT +4, время: 07:02. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot