Говорят "я знаю Си !". А что там знать-то ? Полтора оператора и дурдом с типами ? Он же без нужных функций - ноль. И изучать, что там, кто и, главное, как понахреначил - это только, когда прижат к стенке.
согласен на все 100%. И тем не менее, на данном этапе я предпочту Си.
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
Walkie накатал прогу на си.
ща буду симулировать. а пока есть вопрос:
Шить буду в отдельной панельке, тупо через ЛПТ порт, без всяких резонаторов.
Юзать буду без кварца. Скорость работы, по идее, не особо важна, так как ничего сложного прога делать не будет.
Что делать? Какие фьюзы и как выставить, связанные с резонатором.... Я не догоняю....
Спасибо. Добавлено спустя 20 минут, 56 секунд В схеме нарисованной Вами, ЛЕДы будут гореть когда лог0 на вых портД?
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 06.06.2008 Откуда: Таганрог Фото: 18
Всё... Пропал человек . MindHunter , да, LED's в схеме зажигаются активным нулем. Нарисовал так, потому что обычно цифирек-индикаторов с общим анодом больше. Пусть работает от внутреннего 8 Мгц. Для чего галочки поставьте только на фьюзах : CKSEL0 CKSEL1 CKSEL3 SUT0 Если поставить галку CKDIV8, то будет тарахтеть с делением на 8 (на 1 МГц). Лучше также проставить BODLEVEL0, BODLEVEL1. В этом случае работает внутренний супервизор 4.3V. И при питании ниже этого уровня МК будет находиться под сбросом. ----------------- Кстати, зажечь LED's в этой схеме можно двояко. 1) При инициализации в DDRD прописываются 1, а зажигание - лог.0 через PORTD. 2) PORTD не трогаем вообще (после сброса там нули), а зажигаем лог.1 через DDRD. В общем, очень внимательно изучите по офф. пдф управление портами. Например, для кнопочных входов там нужно включить внутренние подтягивающие резисторы (записью 1 в соответствующие биты PORTB).
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
Walkie писал(а):
CKSEL0 CKSEL1 CKSEL3 SUT0
окэ. ставлю в этих.
Walkie писал(а):
МК будет находиться под сбросом.
это проф. сленг? Говоря простым языком, работать не будет?
Walkie писал(а):
1) При инициализации в DDRD прописываются 1, а зажигание - лог.0 через PORTD.
Вот так и сделал.
Walkie писал(а):
Например, для кнопочных входов там нужно включить внутренние подтягивающие резисторы (записью 1 в соответствующие биты PORTB).
Да. Сделал им DDRB ноликами. И записал в них 1 через PORTB. Теперь проверяю, в цикле, и если там появляется лог0, то запускаю небольшой delay, чтобы убрать дребезг, снова проверяю, и, если там все еще 0, происхочит скачек в счетчике.
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
RESET state и 'не работает' - это совершенно разные понятия.
Reset - устройство переводится в начальное состояние и после его снятия устройство начинает микропрограмму начального запуска.
Состояние "работать не будет" детерминировать не могу.
Member
Статус: Не в сети Регистрация: 06.06.2008 Откуда: Таганрог Фото: 18
Цитата:
если там появляется лог0, то запускаю небольшой delay, чтобы убрать дребезг, снова проверяю
MindHunter , осмелюсь посоветовать построить основной рабочий цикл программы так : [pre] while(1) { delay_ms(10); // вся нужная работа } [/pre] В этом случае получится автоматический опрос кнопок раз в 10 мс. Чтобы очистить кнопку от дребезга : 1) имеем текущую выборку B1 = PINB,x и пару предыдущих : B2, B3 2) имеем переменную устойчивого состояния BUTT (нажато : 1, отжато : 0), которая изменяется только : if ( B1 && B2 && B3 ) {BUTT=0} if ( !B1 && !B2 && !B3 ) {BUTT=1} 3) двигаем историю : B3=B2; B2=B1; Далее формируйте реакцию на нажатие (или отжатие) кнопки. Для этого храните предыдущее устойчивое состояние кнопки BUTT_P. if ( BUTT && !BUTT_P ) { реакция на нажатие этой кнопки } if ( !BUTT && BUTT_P ) { ... на отжатие...} и перезапись в конце цикла BUTT_P=BUTT;
serj, состояние "работать не будет" - это прогноз, что будет при отсутствии резета.
Последний раз редактировалось Walkie 27.03.2009 16:28, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 14.09.2004 Откуда: //Earth/Eurasia
Walkie спасиб!
Ну я примерно так и сделал!
serj видимо вы правы. Я прошу прощения. Буду стараться ознакомиться с терминами.
Walkie писал(а):
Пусть работает от внутреннего 8 Мгц. Для чего галочки поставьте только на фьюзах : CKSEL0 CKSEL1 CKSEL3 SUT0
У меня AT90S2313. В нем вроде нет внутреннего резонатора...
Что делать? Цеплять внешний и при прошивке и при работе? Скажем на те же 8 МГЦ? фюзы трогать?
_________________ Мой сайт www.techno-mind.ru - статьи о самоделках, технологиях, моддинге, тюнинге авто и т.д.
Member
Статус: Не в сети Регистрация: 16.04.2008 Откуда: Москва
Чуть оторву от обсуждения, сорри.
Мне нужен датчик напряжения 1-15 вольт постоянного тока (БП компа), желательно электронный. Измерять буду этим девайсом http://www.masterkit.ru/main/set.php?num=1014. Хоть это и термоприбор, но после небольшого извраща я им меряю давление аналоговым датчиком. Есть инструкция, как модернизировать прошивку и для работы с цифровым датчиком давления. Думаю, что с датчиками напряжения всё аналогично, но погуглив немного, я так и не понял, как они устроены.
Того-посоветуёте плиз цифровой датчик напряжения 1-15 вольт постоянного тока.
пиэс-просьба не давать ссылки на чип-дип, у меня их сайт не открывается.
Member
Статус: Не в сети Регистрация: 06.06.2008 Откуда: Таганрог Фото: 18
MindHunter , AT90S2313 - увы... кварц или внешний тактовый. Старенькая мелкосхема, у нее и фьюзов-то нет.
killerchik , я аж растерялся... Что значит "датчик напряжения" ? Да еще и цифровой... АЦП что ли... Или напряжение преобразуется во что-то другое и это что-то измеряется ? .
killerchik 1. Дублирование - п.3.3 - ЖК, неделя 2. Как я уже говорил, девайс имеет аналоговые входы, которые измеряют напряжение, резистивный делитель вам вполне подойдет IMHO.
wallie писал(а):
Ну, тогда Вам нужен наверное, датчик тока, аналоговый. Жуткий дефицит, меняется на низкоомное сопротивление и компаратор, да?
Бред. Речь идет о измерении, а не о фиксации уровня. К тому же для непонятливых написано:
killerchik писал(а):
датчик напряжения 1-15 вольт постоянного тока
Так что о токе можно забыть.
Советы без знаний предмета - п.3.1 - ЖК, неделя
Member
Статус: Не в сети Регистрация: 16.04.2008 Откуда: Москва
maco Датчики DS18B20 могут быть подключены по 2-проводной линии: общий (GND) и данные (I/O). Это позволяет значительно упростить монтаж за счет использования более дешевого типа провода. Однако этот режим включения вносит некоторые ограничения на работу всей системы. Кроме того, для каждого конкретного случая следует оценивать максимальную длину шины опытным путем, так как различные линия в таком включении более подвержена влиянию помех. Я может что-то не понимаю, но кажись сюда и цифру можно подключать, термодатчики то точно.
Просто у меня каналы на вес золота- ещё поток в сво и собственно температура, так что лепить к аналогу очень не хочется.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Хорошо, уточню вопрос...
killerchik, вы хотите к каналу, где подключаются термодатчики (типа DS18B20) подключить некоторый device и с помощью него измерять напряжения? Я правильно перевел?
Такое устройство можно сделать, для это берется быстродействующая однокристалка с ADC (например AVR от Atmel) и пишется протокол, который с одной стороны эмулирует DS18B20, а с другой замеряет напряжения.
Можете присоединиться к MindHunter в освоении однокристаллки.
Есть инструкция, как модернизировать прошивку и для работы с цифровым датчиком давления.
Если есть возможность модернизировать прошивку в более широком понимании (т.е. не только с цифровым датчиком давления). Тогда можно взять АЦП с интерфейсом 1-Wire и опрашивать его вместе с температурными датчиками.
Либо пользуйтесь советом serj.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
maco, не думаю.
У maxim есть только DS2450 1-Wire Quad A/D Converter.
И началось...
ID DS2450 = 20h
ID DS18B20 = 28h
В DS18B20 и DS2450 совершенно различный набор регистров. Причем, если (зачем-то) используют регистры порогов в DS18B20, то совместимость вообще никакая.
DS18B20:
byte 0 Temperature LSB
byte 1 Temperature MSB
byte 2 TH Register or User Byte 1
byte 3 TL Register or User Byte 2
byte 4 Configuration Register
byte 5 Reserved (FFh)
byte 6 Reserved
byte 7 Reserved (10h)
byte 8 CRC*
DS2450:
0-1 данные канала А
2-3 данные канала B
4-5 данные канала C
6-7 данные канала D
8-F - конфигурационные.
Так что - да, придется сидеть и осмысленно править код. Причем, вначале прошивку придется тщательно дизассемблировать до компилируемого исходника.
Member
Статус: Не в сети Регистрация: 06.06.2008 Откуда: Таганрог Фото: 18
serj, не царское это дело : "тщательно дизассемблировать до..." . Потом можно до самой пенсии разбираться (впрочем, и после неё). Во сто крат легче нужное гениально написать...
serj Вышесказанное - в контексте "возможность модернизировать прошивку" - ежели это недоступно, то пусть ваяет эмулятор . А по поводу АЦП - DS2438, например. Для подобного требования вполне хватит, это не счетверенный АЦП типа DS2450 .
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения