dim3740

Members
  • Публикации

    336
  • Зарегистрирован

  • Посещение

Репутация

-4 Плохой

О dim3740

Информация

  • Город
    Уфа

Электроника

  • Стаж в электронике
    Не связан с электроникой
  • Сфера радиоэлектроники
    Башкортостан

Посетители профиля

2 537 просмотров профиля
  1. Кнопки и АЦП

    http://arduino.net.ua/Arduino_articles/Arduino_proekty/Podkljuchenie knopok k odnomu analogovomu vhodu/ Тут опровергается это.... см. текст после example 25.2 , нр у меня не работало(( Резисторы поставлены теперь везде. Схема такая, только разные номиналы, 3,3 вольта, и нет R1 . Поэтому код сравнения на нижнюю кнопку такой: "if (voltage>0) && (voltage < скажем... 40) ... может есть шумы при закорачивании кнопки на землю? Если сравнивать не с нулем, то отсекаются "верные" нажатия, что также плохо.
  2. Кнопки и АЦП

    Код мой верный, энкодер запустился с внешними резисторами. Никаких средств подавления дребезга энкодера не применил. А в кнопками, парадокс, геморой продолжается. Хотя время нажатия кнопки куда больше времени шариков энкодера. Дело в питании, имхо. При отладке питание идет одновременно от 3-х источников: БП платы, от ЮСБ для COM порта платы, от программатора ISP.... (Как они на плате там объединяются - мне не ведомо((( да и не интересно это. ..) . А в реальной работе - надо отдельно - или от БП, или от ЮСБ. Вот АЦП и прыгает(((( Плату наращивать не хотелось бы, буду учиться использовать имеющиеся ресурсы чипа. Да, верно, задача изначально была, что не хватает портов...
  3. Кнопки и АЦП

    Подключить энкодер к АЦП не получается. Даже с внешним резисторами. В сети не нашел ни одного такого проекта. Но, может, АЦП как-то запустить в режиме компаратора? Или все это бесперспективно? В цикле: ADCSRA|=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); ADMUX =0x46; // опорный на 5 вольт, и 6 порт _delay_us(500); ADCSRA|=(1<<ADSC); //Начать преобразование while ((ADCSRA & 0x10)==0); if ((ADCL|ADCH<<8)>50) // хватит 8 разрядов. 50 - любое значение больше нуля и шумов { adc6=0b01000000; . } else { adc6=0; } ADMUX =0x47; // опорный на 5 вольт, и 7 порт _delay_us(500); ADCSRA|=(1<<ADSC); while ((ADCSRA & 0x10)==0); if ((ADCL|ADCH<<8)>50) { adc7=0b10000000; } else { adc7=0; } NewState=adc6|adc7; // сворачиваем в один байт if(NewState!=OldState) { switch(OldState)
  4. Кнопки и АЦП

    Продолжил работу... Теперь надо подключить энкодер, но его надо тоже подвести на аналоговые входы. Тут нет даже делителя, и для идентификации сравниваем с нулем. Это не сложно, и я очень не хочу ставить внешний резистор. Примеров внутренней подтяжки в инете не много. Я верно делаю, что 1) иниц порт как "входной"? 2) делаю подтяжку как "цифровой" порт 3) назначаю порт в АЦП, тем самым он переключается в аналоговый вход? Сложность еще в том, что у Меги328 порты 6,7 (именно они мне нужны для энкодера) обозначены как "ADC6", в то время как другие так: "PC5(ADC5)". Даташит ничего не говорит об работе внутренней подтяжки на 6,7 портах. ПС: с внешним сопротивлением энкодер на 6,7 портах работает нормально.
  5. Вопросы От Начинающих По Мк

    @technik-1017 спасибо, правда, программку по ссылке не запустилась... Нашел выход путем добавления буквенного префикса в старший (5) разряд посылаемых данных, который потом можно отфильтровать.
  6. Вопросы От Начинающих По Мк

    По ЮСБ/com порту (плата Ардуино) отправляю значения АЦП на комп. В качестве терминала использую среду Ардуино. Значения читаются в формате типа "0123", что хорошо, но как только втыкаю шнур ЮСБ, Винда "обнаруживает" новое устройство "Микрософт BollPoint трекбол для посл. порта" и мышка (как PC/2 так и ЮСБ) перестает работать(( . Устройство реально появляется в диспетчере устройств в разделе "Мыши". Код выполняется в цикле.... прерывание сделаю потом. Код загружается по ISP. Загрузчик стерт. char B1; ADCSRA|=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); ADMUX =0xC2; _delay_us(500); ADCSRA|=(1<<ADSC); //Начать преобразование до 1024 while ((ADCSRA & 0x10)==0); voltage=ADCW; if (voltage<1000) { v=voltage; // буфер i=voltage/1000;//1 voltage=voltage-i*1000; while ( !( UCSR0A & (1 << UDRE0)) ); UDR0= 0x30+i; i=voltage/100;//2 voltage=voltage-i*100; while ( !( UCSR0A & (1 << UDRE0)) ); UDR0= 0x30+i; i=voltage/10;//3 voltage=voltage-i*10; while ( !( UCSR0A & (1 << UDRE0)) ); UDR0= 0x30+i; i=voltage/1;//4 voltage=voltage-i*1; while ( !( UCSR0A & (1 << UDRE0)) ); UDR0= 0x30+i; while ( !( UCSR0A & (1 << UDRE0)) ); UDR0='\n'; //новая строка }
  7. Кнопки и АЦП

    Спасибо:)) Я недопонимал, что есть опорное напряжение, как эталон, и измеряемое. Оба нужны, если меряется напряжение от внешнего источника. Для режима "кнопок", когда меряем по сути "сопротивления", напряжение на входе от внутреннего резистора, думал, и есть "опорное". На другом форуме подсказали... Ну, нет опыта с АЦП пока(((
  8. Кнопки и АЦП

    да нет... я почитал, но в основном применяют внешние опорные источники. Если кто применяет внутренние подтяжки, как у меня, то не поясняют как это может сочетаться с режимом "опорных 2,54 вольта". Просто пишут, что этот режим "не дает точность". Ну так, его бы вообще и не делал разработчик тогда:))) А мне как раз нужно найти компромисс между точностью и усложнением схемы.
  9. Кнопки и АЦП

    Для сабжа точность не столь важна, т.к. есть программный диапазон значений АЦП. Но, есть разброс резисторов, температура, напруга, кол-во кнопок (нужно 5-7) и т.п. Короче, все таки надо немного повысить точность, не усложняя схему дроселями и т.п. У меня верхнее плечо УЖЕ сформировано поддтягивающим внутренним резистором. Тогда что такое режим от "внутреннего 2,54 вольта"? Эли подтяжку не делать? Потом у меня железо Ардуино Нано - и я не вижу там входа AVCC вообще. Есть AREF. Он поможет? 16 мгц. Делитель на 128, дает 125 Кгц.
  10. Вопросы От Начинающих По Мк

    Решил (подсказали)! Да опять известный был косяк - частоту опроса контроллера в АВР Студио нужно ставить 1/4 от.... Т.е. раз проц был чистый , то в нем 1 Мгц. А я по привычке от частоты внешнего кварца 8 мгц делил на 4((((
  11. Вопросы От Начинающих По Мк

    Если используется внешний программатор, то питание для некоторых плат (скажем так, которые я сам делаю) может браться от него. Пытаю весь день платы((( Эталонная - все работает, но прошита ранее. Новая - чистый чип - не "видится". Трассировка одинаковая. Беру осцил, пытаюсь сравнить диаграммы. Не получается, потому что в эталонной плате порты ISP прошитым кодом инициализированы в 1. Поэтому сложно сравнить....(((( SCK при операции "чтение сигнатуры" в эталонной плате не наблюдаю вообще! Но проц читается.
  12. Вопросы От Начинающих По Мк

    Прошу помощи - как выявить почему МК не видится программатором... Опять бьюсь сутки напролет(((( Что делаю: а) Чипы на панельке, проверяю "доктором", там все ОК, если говорить о фьюзах. б) Программатор видит аналогичный чип на другой плате. в) Чипы Атмага16А, 3 шт. г) Протравил новую плату: только панелька и 4 проводка, питание нет, кварца внешнего пока не ставлю. Все порты в воздухе. Не видит.
  13. Вопросы От Начинающих По Мк

    Спасибо. Проверьте меня: нахожусь в AS, подменю... э.-э... "прошивка". Прошиваю и читаю успешно МК на плате. Не выходя из софта, переключаю кабель программатора на чистый кристалл МК, но такой же. Нажимаю "чтение девайса". Он должен прочитаться, потому что, фьюзы я его еще НЕ прошивал, но по умолчанию, он запустится = прочитается от внутренного генератора. А то, что чуть ниже в меню прошивки у меня в проекте стоят настройки фьюзов от ПРЕЖНЕГО мк - это не важно пока. Так?
  14. Вопросы От Начинающих По Мк

    Программатор подключен по ISP к МК с обвязкой (внешний кварц и т.п.). Прошит. Питание на плату с МК НЕ подано. Тем не менее, из AVR Studio "Device Information" - "Read" успешно. Получается, что для чтения сигнатуры чипа этого достаточно? Всегда ли? Чистый голый новый МК у меня таким же образом не читается почему-то..... Хотя подключены все те же 6 проводков. Я вспомнил... соответствие фьюзов все же нужно. Т.е. если кварца нет, а фьюзы на внешний настроены, то даже сигнатура не прочитается. Правда непонятно, как читается чип без напряжения. Наверное, сигнатура где-то просто сохранено в проекте Авр студии. А реального чтения нет.
  15. Логика в корпусе SO8 (название/серия)

    Да, спасибо, такой в магАзине нет ничего(((( Все равное удивлен, что 14 конт логики список на нескольких листах, а 8 конт - совсем мало простой логики. Зато есть ОУ, память, преобразователи, регистры и прочая лабуда... Придется заказать на Ебее(((