Перейти к содержанию
    

Anjey_N

Участник
  • Постов

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

  • Посещение

Весь контент Anjey_N


  1. IAR+Proteus+LCD

    Привет всем. Я так давно сюда не заходил, что могу ошибится веткой форума. Но всё же проблема такая. Все свои проекты я сначала отлаживаю на МК Atmega16 с использованием JTAG. А сейчс решил попробовать поработать с Proteus(7.5 SP3). Написал на СИ(IAR 5.50) маленькую программу вывода одного слова на LCD индикатор. Значит на JTAG схема работает и слово на индикатор выводится, а Proteus - нет. Может мне кто-то объяснить в чём причина? Файлы прилагаются. LCD_PROT.RAR proteus_lcd.rar
  2. Индикатор - WinStar 1602. Контроллер - ATmega 16. Не могу пройти инициализацию. Индикатор на 2 строки, а включается только одна. Посмотрите, пожалуйста, код. Может где-то есть хомут, который я не вижу. Я выставлю файлы: lcd.c; lcd.h; и delay.h в архиве. Главный файл main.c показывать не буду, там только вызов подпрограммы инициализации индикатора lcd.rar
  3. Связь двух АВРов

    А мне больше двух и не нужно! Буду соединять по MK по UART. Скорость 9600 выберу. В ваших словах что-то есть! Наверно я так и сделаю! :1111493779:
  4. Связь двух АВРов

    а могу ли я соединить 2 МК по UART напрямую?
  5. Связь двух АВРов

    Иногда приходится делать метрологию на оборудовании 1986года выпуска где компа совсем нет. :maniac: Напряжение вручную задаётся с калибратора, показания (результаты) визуально считываютя с индикатора и шариковой ручкой заносятся в таблицу. Кабель есть экранированый - 2 жилы + экран. Минус на экран, плюс на 1 жилу, информация на 2. У нас в городе радиорынка нет, микросхемы только под заказ и долго ждать. А указанные мной МК уже есть в наличии. ПРи такой длине линии связи и при помехах от электронного оборудования 1-Wire будет плохо работать? Если да, то I2C подойдёт?
  6. Связь двух АВРов

    Прочитал все ваши сообщения, большое спасибо! Суть моей задумки проста. Первый МК будет динамически опрашивать опрашивать 12 кнопок. Номер нажатой кнопки будет передавать в линию связи. Назад будет получать отклик и включать соответствующий номеру нажатой кнопки светодиод. Устройство будет сделано в виде пульта. :1111493779: Второй МК будет управлять исполнительным устройством (в моём случае калибратором П320). Это устройство планирую сделать для облегчения труда при метрологии аппаратуры, тк надоело крутить ручки калибратора вручную, да и ходить постоянно от компа к нему - тоже надоедает. А так метролог будет сидеть за компом, и не вставая со стула управлять калибратором (задавать напряжение) . Вот поэтому и вопрос какой лучше применить интерфейс? Для 485 , я так понимаю, нужны дополнительные микросхемы. А хотелось бы слепить из того что есть - на пульт ATiny2313 или ATmega8, на управление - ATmega8.
  7. Связь двух АВРов

    а если длина линии связи 10 метров?
  8. Связь двух АВРов

    Можно ли соединить 2 МК по интерфейсу 1-Wire?
  9. Меня вводит в заблуждение фраза int DebouncePress(int RawButtonPressed(char), char button, unsigned int *state) Здесь нет ошибки7
  10. А как Вы используете переменную char button ?
  11. Ух, ты! В данном алгоритме кнопка одним концом сидит на выводе МК, а вторым на "земле"? Мой код громоздкий из-за маленького опыта, но он работает. Индикация работает! Вы объявили в структуре Int_Key, а как её используете7
  12. Необходимость есть, переведи!
  13. не пошёл Ваш код. переменная антидребезга постоянно сбрасывается в исходную величину. А Вы мой код не смотрели?
  14. Вот приготовил свой код на рассмотрение. Критикуйте! Можете потыкать меня носом в ошибки! Keys.rar
  15. Не совсем так. Эта схема работает. И не только в симуляторе, но и на реальном контроллере, упрравление идёт через JTAG. PA7 настроен на вход с подтягивающим резистором. Когда нажата кнопка, лог. нуль через диод, замкнутую кнопку подаётся на вход PA7. Запоминается номер вывода и взводится флаг антидребезга на 20 мсек для устранения дребезга. После этого программа улучает момент, когда лог. нуль появляется на том выводе, который она запомнила перед пднятием флага антидребезга. Если кнопка замкнута, тогда номер вывода = запомненному номеру и программа возвращает номер вывода, те номер кнопки. Может туманно объяснил, смотри код // Сканирование клавиатуры unsigned char Scan_Key(void) { static unsigned char pk=0; static unsigned char Key_Buf; if(TESTBIT(flag,DREBEZG)) // { if(cnt_dr!=0) { delay_timer1(MSEC(1)); // задержка 1 мсек // delay_ms(1); cnt_dr--; } else { cnt_dr=CNT_DR_MAX; CLEARBIT(flag,DREBEZG); BUZER=0; // снять звуковой сигнал } } else { switch (h) { case 0 : if (!KEY) // кнопка нажата! { SETBIT(flag,DREBEZG); // взвести флаг антидребезга BUZER=1; // подать звуковой сигнал Key_Buf=n; // запомнить номер кнопки h++; // увеличить счётчик прохождений } pk=0; break; case 1 : if(n==Key_Buf) { if (!KEY) { SETBIT(key,n); // запоминаем нажатую кнопку! pk=key; SETBIT(flag,KEYBOARD); } else // если кнопка отжата, { // то проверяем - действительно ли SETBIT(flag,DREBEZG); // взводим флаг антидребезга h++; // и увеличиваем счётчик прохождений } } break; case 2 : if((KEY)&&(Key_Buf==n)) // если кнопка отжата и её { // номер соответствует записанному в буфер Key_Buf=0xFF; // запись в буфер неиспользуемого числа h=0; // обнуление счётчика прохождений pk=0; key=0; CLEARBIT(flag,BUSY); } break; default: break; } } return pk; }
  16. я так исделал, код кнопки я получаю, не получается дальше. Не сохраняются данные в памяти, содержимое масива при длительном нажатии на кнопку увеличивается/уменьшается неравномерно, иногда останавливается. Если вам не сложно и есть желание можете написать свой код Хочется посмотреть! :beer:
  17. динамический опрос кнопок

    Всем привет! Вот пришёл просить помощи. Задача несложная, только я вконец уже запутался. Есть МК ATmega16, АЛС, индикация динамическая, кнопки М, +, - Есть массив переменных set_temp[3]. Пока кнопки не нажаты, происходит каждые 5 сек поочерёдный вывод на индикатор содержимого массива. ( с этим я разобрался работает). При нажати на М включается режим редактирования, 2 мл разряда индикатора мигают. Кнопками + и - изменяется содержимое элемента массива. Последующее нажатие М приводит к переходу к следующему элементу массива. Если все элементы отредактированы - записать в EEPROM. Кто что посоветует, или поможет кодом. Свой я надлежаще оформлю и выставлю позже. Пишу на Си в ИАРе.
  18. Внешние прерывания

    На входе INT0 - кнопка. Контролер спит. Из спячки должен выйти по нажатию кнопки. Прерывание настроено на низкий логический уровень. Нужно ли в подпрограмме обработки прерывания включать антидребезг?
  19. Вопрос по АЦП

    спасибо, это то что я хотел услышать!
  20. Вопрос по АЦП

    Хочу тоже задать вопрос! МК ATmega8, задействован только один канал. При непрерывном преобразовании нужно ли разрешать прерывания АЦП? И ещё такой вопрос. Можно ли в режиме одиночного преобразования запускать АЦП (ADSC=1) один раз в 1 мсек, например в прерываниях таймера ТС0. Сделать 16 измерений, все 16 результатов просуммировать и сумму сдвинуть вправо на 4 разряда. Такими действиями можно убрать колебания 2 мл разрядов АЦП? И ещё: нужно ли потом результат обрабатывать по алгоритму скользящего среднего? Может туманно написал, так извините!
  21. Помощь новичку

    Ваш совет мне помог. Я переключил модель памяти на Small, теперь без ошибок. Спасибо!
  22. Помощь новичку

    Спасибо. Ошибка исчезла, когда я в графе data stack поставил 0х10. Насколько я понимаю я увеличил размер стека. Только почему для увеличения размера нужно указывать меньшее число? Ошибка выдавалась при размере 0x20
  23. Помощь новичку

    Уважаемые знатоки, ответьте! Что означает сообщение IAR Error[e16]: Segment CSTACK (size: 0x20 align: 0) is too long for segment definition. At least 0xe more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_SRAM_TBASE:+_..X_SRAM_TSIZE", where at the moment of placement the available memory ranges were "DATA:ee-ff" Reserved ranges relevant to this placement: DATA:60-97 TINY_I DATA:98-ed TINY_Z DATA:ee-ff CSTACK МК ATmega16
  24. Опрос валкодера

    В программе, где будут использоватся валкодеры, частота их опроса будет 1 раз в 1мс. А за замечания - спасибо
×
×
  • Создать...