admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

2 321 сообщение в этой теме

gogaze    4

Попробовал, добился, чтобы компилировалось без ошибок. Верхняя кнопка переключения эффектов работает, а вторая кнопка (скорость) все равно не работает

На всякий случай скину архив с проектами Urok5 - сделан в CVAVR работает как надо. Urok5Atmel - то, что я пытаюсь переделать под Atmel Studio7

CVAVR Opjat Knopki.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    546

Какая "верхняя кнопка" ? Что за "вторая кнопка" ? Вы о чём ? Причём тут кнопки, если Вы спрашивали про задержку ?
Что за отрывки цитат из собственных мыслей ? Которые мы, если что, читать не умеем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Ну я же прикрепил архив и с протеусом и с исходниками. Там как раз интересная разработка для изучения прерываний. Один вариант в CVAVR - работает прекрасно, первой кнопкой переключаются эффекты, второй кнопкой изменяется скорость эффектов. Я из него пытаюсь сделать вариант в Atmel Studio7 и столкнулся с проблемой при компиляции. 

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DmitryS    28

@gogaze ,  конечно код из CV не будет компилироваться в AS7 ,  язык Си Атмел студии хоть и похож на язык CV ,  но много различий в синтаксисе . Много в коде придется подправлять . Смотрите в студии файл iomXXX.h там есть все макросы которые она понимает , сравниваете с текстом СV и правите в понятные студии макросы .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
5 часов назад, DmitryS сказал:

@gogaze ,  конечно код из CV не будет компилироваться в AS7 ,  язык Си Атмел студии хоть и похож на язык CV ,  но много различий в синтаксисе . Много в коде придется подправлять . Смотрите в студии файл iomXXX.h там есть все макросы которые она понимает , сравниваете с текстом СV и правите в понятные студии макросы .

А зачем тогда атмеловцы в студиях начиная с версии 6.1 в качестве плагина используют CVAVR? Даже в интерфейс студии встраивается генератор кода и тулчейн CVAVR.

Я пробовал в delay.h  закоментировать строку __builtin_avr_delay_cycles(__ticks_dc); - компилируется, но светодиоды начинают зажигаться хаотично

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sergey-Ufa    615

Для вас что, работа в Студии самоцель? Чем вам CVAVR так не угодил? Чем мучиться, переделывать код с одного компиллятора на другой, давно бы уже реализовали свои хотелки на CVAVRе. Лично я уже много лет пользую именно его и ни на одну Студию не променяю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
24 минуты назад, Sergey-Ufa сказал:

Для вас что, работа в Студии самоцель? Чем вам CVAVR так не угодил? Чем мучиться, переделывать код с одного компиллятора на другой, давно бы уже реализовали свои хотелки на CVAVRе. Лично я уже много лет пользую именно его и ни на одну Студию не променяю.

Ну так я первые шаги и делал  в CVAVR, но

Чтобы знать, что твоя жена лучше - надо попробовать чужую!

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    442
24 минуты назад, gogaze сказал:

Чтобы знать, что твоя жена лучше - надо попробовать чужую!

Одолжите свою, а то ведь кто поверит, что ваша лучше?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DmitryS    28
8 часов назад, gogaze сказал:

А зачем тогда атмеловцы в студиях начиная с версии 6.1 в качестве плагина используют CVAVR? Даже в интерфейс студии встраивается генератор кода и тулчейн CVAVR.

Наверное за тем же , что и плагин Ардуино , в студии писать код гораздо приятней . Но компиляцией написанного кода занимается не  студия , а  IDE ардуины . Также наверное и с CV AVR .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
4 часа назад, ARV сказал:

Одолжите свою, а то ведь кто поверит, что ваша лучше?

А мне не надо, чтобы кто-то поверил. Это МНЕ надо!!!

Точно так же одни расхваливают Atmel Studio, другие CVAVR, третьи еще что-то. Вот я сравню и сделаю вывод. Для себя!

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Образования для! В седьмом уроке на третьей минуте автор говорит, что АЦП может работать в двух вариантах - по прерываниям и вручную. Я не нашел ни где однозначного ответа на вопрос - какой вариант лучше (точнее, быстрее и т.д.) Может кто-то объяснит? Или носом ткнет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    546

А Вы попробуйте оба варианта и тогда определите для себя, какой из них для Вас лучше (точнее, быстрее и т.д.) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Извиняюсь! Просто думал, что если опытные люди увидят мое сообщение, но сразу смогут объяснить разницу или преимущества.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    442
Только что, gogaze сказал:

Просто думал, что если опытные люди увидят мое сообщение, но сразу смогут объяснить разницу или преимущества

Оба варианта по точности и скорости одинаковы. Но принципиальное их отличие в том, что за "ручным" следить вы должны самостоятельно, а "по прерываниям" действуешь по принципу "включил и забыл". Например, вам надо снять 100 семплов. В ручном режиме вы сделаете цикл на 100 повторорений запуска АЦП и ожидания его преобразования, а затем сохранения данных в массив. Естественно, пока этот цикл не завершится, более ничего вы делать не сможете. Если сделать по прерываниям, то после первичного запуска АЦП вы можете заниматься своими делами, иной раз проверяя - закончен ли "съем данных" или нет. Многие МК позволяют запуск АЦП делать по аппаратному событию, что вообще развязывает ваши руки для более приятных занятий (не поймите меня не правильно).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
8 часов назад, gogaze сказал:

Образования для! В седьмом уроке на третьей минуте автор говорит, что АЦП может работать в двух вариантах - по прерываниям и вручную. Я не нашел ни где однозначного ответа на вопрос - какой вариант лучше (точнее, быстрее и т.д.) Может кто-то объяснит? Или носом ткнет!

Прерывания гарантируют время реакции процессора на событие, и обычно (точнее всегда!) в документации на процессор есть соответствующий раздел.

Тогда как обработка события методом опроса флага предполагает некоторую задержку до опроса, которую достаточно сложно, а иногда вообще не возможно контролировать.

Для вас это выливается в ответ на вопрос когда вы хотите обработать полученное с АЦП значение:

 в заданное на вызов процедуры прерывания время, или

когда получится опросить флаг в фоновой программе.

Изменено пользователем ruhi

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4

Если я вас правильно понял, то когда у контроллера одна задача - проверка АЦП, то можно использовать любой из вариантов? И еще один момент. Основная роль задержки в While (1) - устаканивание показаний на дисплее или... Собранный проект на макетке (читай - в железе) ни какой разницы не показал - что с _delay_ms(200), что без него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
3 минуты назад, gogaze сказал:

Если я вас правильно понял, то когда у контроллера одна задача - проверка АЦП, то можно использовать любой из вариантов? И еще один момент. Основная роль задержки в While (1) - устаканивание показаний на дисплее или... Собранный проект на макетке (читай - в железе) ни какой разницы не показал - что с _delay_ms(200), что без него.

Это уже две задачи, как минимум, выполнить АЦП, и что то сделать с результатом, вывести на экран, например. Раз вы не видите проблем значит вам любой вариант подойдет (обычно)вы же не цифровой обработкой сигналов занимаетесь, а на термометр хоть раз в секунду, хоть в минуту смотреть - разницы нет. Про While (1) я не видел откуда он.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
6 минут назад, ruhi сказал:

Про While (1) я не видел откуда он.

так с урока 8

2017-12-12_195110.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
29 минут назад, gogaze сказал:

так с урока 8

2017-12-12_195110.jpg

Это-задержка чтоб экран не мельтешил, скорее всего, точно с индикацией связано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
1 час назад, ruhi сказал:

Это-задержка чтоб экран не мельтешил, скорее всего, точно с индикацией связано.

Когда я делал практически то же самое на 16х02 то изменение значения этой задержки было очень заметно. На 5110 нет. Может (не знаю как правильно назвать) инерционность у этих дисплеев разная?

Изменено пользователем gogaze

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
10 минут назад, gogaze сказал:

Когда я делал практически то же самое на 16х02 то изменение значения этой задержки было очень заметно. На 5110 нет. Может (не знаю как правильно назвать) инерционность у этих дисплеев разная?

а что было заметно то? моргание или значения менялись? 

Что хотим то, вообще, если научиться чем то управлять, то надо внутрь функций LCDprintf, LCDupdate, readADC, presets() залазить и разбираться, что то менять и проверять свои предположения о том на что это изменение повлияет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    442
Только что, gogaze сказал:

Когда я делал практически то же самое на 16х02 то изменение значения этой задержки было очень заметно

Вышеприведенный код в цикле делает Lcd_clear(), поэтому мерцание будет видно обязательно, хоть с задержкой, хоть без. Просто с задержкой оно реже происходит и менее заметно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
10 часов назад, ruhi сказал:

а что было заметно то? моргание или значения менялись? 

Если задержка была маленькой - значения последнего знака прыгали практически постоянно, без остановки. Да, проект тот был сделан в CVAVR с использованием прерываний  мастером создания проектов.

Да, по совету (не помню откуда) добавил электролит 100х16 на AVREF - тоже помогло.

С этим разобрался, всем большое спасибо! 

Вот теперь главный вопрос: как к этому проекту прикрутить счетчик ампер-часов. В интернете ни уроков ни примеров связанных со счетчиком не нашел. Задавал этот вопрос на других форумах, но ответы типа "Каждую секунду суммируешь текущее значение тока в накопитель. Результат делишь на 3600." - мне, как начинающему, ни о чем не говорят.

Так вот, собственно, огромная просьба - если пример такого кода - тайна, то хотя бы направьте в нужное направление пошагово типа  

 1. Подключить и настроить таймер (или что там надо),

 2. Какую-то переменную создать. ну и т.д. Я думаю - вы поняли.

Изменено пользователем gogaze
Дополнение к тексту

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    546
22 часа назад, gogaze сказал:

но ответы типа "Каждую секунду суммируешь текущее значение тока в накопитель. Результат делишь на 3600." - мне, как начинающему, ни о чем не говорят.

А других ответов Вы и не увидите, ибо "Вт/ч" - это единица мощности за единицу времени.
Что ещё можно тут сказать, как не "Суммируйте мгновенную мощность, а потом делите на время, за которую делали эту сумму." ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
gogaze    4
52 минуты назад, Alex сказал:

А других ответов Вы и не увидите, ибо "Вт/ч" - это единица мощности за единицу времени.
Что ещё можно тут сказать, как не "Суммируйте мгновенную мощность, а потом делите на время, за которую делали эту сумму." ?

А жалко, что не увижу! Так как совет 

 

54 минуты назад, Alex сказал:

"Суммируйте мгновенную мощность, а потом делите на время, за которую делали эту сумму."

понятен опытным программистам, а эта тема в форуме относится к "Урокам для НАЧИНАЮЩИХ", к которым я и отношусь. Именно поэтому я и прошу:

 

23 часа назад, gogaze сказал:

огромная просьба - если пример такого кода - тайна, то хотя бы направьте в нужное направление пошагово типа  

 1. Подключить и настроить таймер (или что там надо),

 2. Какую-то переменную создать. ну и т.д. Я думаю - вы поняли.

Я на других форумах тоже пытался получить помощь по вопросу счетчика ампер-часов, и в ответ либо тишина, либо отписки ни о чем. По этому поводу у меня сложилось впечатление что:

1. Код для счетчика ампер-часов очень сложно написать и он по силам очень опытным программистам, а такие по подобным темам форумов не лазят. Соответственно и помочь не могут.

2. Либо те, кто может оказать помощь хотят получить за нее что-то. Ну так написали бы!

3. Мистика - на этот вопрос наложено ТАБУ!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Alexey104
      Всем привет!
      Возникла следующая проблема:
       
      Есть две ардуины 'Mega2560'. По несчастливому стечению обстоятельств данные платы попали в руки одному чуваку, который, вернув их, заявил, что они перестали работать после того, как он "чисто ради интереса" поковырял на обеих некоторые фьюзы. Есть у меня такой китайский usbasp v2 программатор:
      Подключив данный девайс к ICSP-пинам первой платы, удалось без проблем восстановить на ней загрузчик через стандартную Arduino-IDE, после чего работоспособность платы полностью восстановилась. Но вот при попытке сделать то же самое со второй платой, получаю это:
      Такое же сообщение получаю при попытке зашить загрузчик в неподключенную к программатору ардуину, то есть программатор вообще не видит МК. Плата прекрасно работала до того, как вышеупомянутый товарищ покрутил настройки фьюзов.
       
      Что я пытался предпринять:
      Замыкал пины JP3 программатора, отвечающие за понижение скорости, подключал к ардуине 5V от внешнего источника при прошивке загрузчика, - не помогло.
       
      Поиском пользоваться умею, аналогичную тему тут находил, но там проблема была в том, что парень неверно подключал программатор к контроллеру. В моём же случае всё подключено верно, повторюсь, что загрузчик первой платы этим же программатором был восстановлен успешно.
      Буду рад любым советам касательно того, как восстановить работоспособность платы.
       
       
       
    • Автор: Сергей Скопинцев
      Нужно разработать циклическую программу сбора информации от 10 измерительных источников. Период повторения цикла - одна секунда
      Источники:
       М - тензопреобразователь давления. Мостовая схема питается постоянным напряжением, выходной сигнал от 0 до 100 милливольт
       Т, ТМ, ТА- три канала измерения изменения напряжения в диапазоне от 400 до 600 милливольт (тоже нужен мост?)
       ЛМ - анализатор максимума напряжения (от 0 до 5 Вольт) по 10 точкам более-менее распределённых в измерительном цикле. Найденный максимум потом должен участвовать в анализе, постепенно уменьшаясь на 20% каждый цикл
       ВЛ - измерить напряжение на Малой емкости (50 пФ) с помощью емкостного делителя по алгоритму:
                         Снять Землю со средней точки емкостного делителя, подать на емкостной делитель положительный Импульс
                         Замерить нужное нам напряжение в средней точке делителя
                         Снять положительный Импульс с делителя, посадить на землю среднюю точку делителя
      - остальные каналы К7...К10  служебные
      Разрядность данных - 16 двоичных.

      Результаты писать на MicroSD текстовым файлом, на первом месте в строке текущее время в секундах, остальные каналы разделены пробелами
      Порядок каналов:
      Т - М -ТМ - Вл - ЛМ -...
      Коэффициенты усиления по каждому информационному каналу должен иметь возможность изменить оператор по формуле y = Ax + B
      Прибор автономный, питается от + 5 Вольт.
       
    • Автор: Ru_s
      Здравствуйте. Подскажите пожалуйста, возможно ли на attiny13 реализовать такую штуку. Мне в процессе работы программы нужно поменять режим работы таймера/счетчика с fast PWM на обычный счёт, отсчитать длительный промежуток времени и опять вернутся в режим ШИМ. Т.е. я подаю на ногу сигнал ШИМ и когда он в максимальном значении, я его отключаю, и тупо подаю на ногу высокий лог. уровень. В это время Т/С по идее свободен, и мне надо посчитать время работы выхода на максимальном лог. уровне, при достижении какого-то значения времени нужно перевести т/с обратно в ШИМ. Возможно ли это? И как приблизительно это реализовать
    • Автор: Kiraspbkiev Kira
      День Добрый. Есть два вопроса от новичка: 1) Правильная ли схема сделанная мною? 2) если схема верна то как правильно подключить к atmega328p-mu usb на чипе cp2102-grm?
      На схеме колодка JP1 это AVR ISP а JP2 это UART
      С проектированием столкнулся в первый раз, цель узнать что то новое и сделать своими руками:)