admin

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

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

gogaze    0

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

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

CVAVR Opjat Knopki.rar

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Alex    528

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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


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

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

так с урока 8

2017-12-12_195110.jpg

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


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

так с урока 8

2017-12-12_195110.jpg

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Загрузка...

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

    • Автор: chip_1
      Для коптера делаем контроллер для автополета на ардуине. Но не можем совладать с калибровкой внешнего компаса. 
      Требуется написать прошивку для контроллера, который бы считал калибровку и выдавал ардуине готовый сигнал.
      Компас классический HMC5983, подключается по I2C. Но при его использовании ближе к югу или северу начинает показания резко менять, получается так называемый "эллипс" а не круг. 
      Контроллер найду, прошью, но с программированием на AVR вообще никак ((.
      В итоге должна получится железка, на входе компас, на выходе готовый сигнал после поправок. И кнопка начала калибровки. Т.е. по ее нажатию, надо крутануть компас вокруг своей оси.
      Проект не коммерческий, для себя, если кто хочет внести свой небольшой вклад, буду очень рад! Спасибо!
      С меня пивасик! )
    • Автор: butterfly193
      Доброго времени суток всем, уважаемые специалисты.
    • Автор: Vlad Zubarev
      Доброго времени суток!  Кто разбирается с Atmega128,  ассемблером и кому не жалко времени,  пожалуйста помогите. 
      Как можно корректировать скорость падения маятника (он должен постеменно набирать скорость падения и плавно замедляться к верхней точке)... Какие данные нужно менять?!  Спасибо! 
      логин маятник 2.zip

    • Автор: Veeeo
      Планирую сделать устройства для поддержания заданной темперетуры воды (равномерно по всему объему)
      Основные компоненты - ТЭН, помпа = бесколлекторный мотор (примерно как аквариумная, только расчитанная на 100 градусов), термодатчик, мозги на ESP8266.
      Плюс светодиоды.
      Схема ниже. Подскажите, пожалуйста, что упустил, какие ошибки. Больше всего смущает управление насосом. Его нужно только включать/выключать, ШИМ не нужен. Как избежать бросков тока при старте?

      Питание нисковольтной части:

      Преобразователь 12V -> 5V тоже думаю взять готовый (на LM2596):

    • Автор: Leonkuban
      Предлагаю услуги по разработке и мелокосерийному изготовлению радиоэлектронной продукции: от ТЗ до готовых изделий.
      Микроконтроллеры (Atmel), аналоговая элетроника (токи до 20А, в том числе с чистой синусоидой на биполярных транзисторах),
      измерительная электроника (слабые и сверхслабые сигналы, аналого-цифровая обработка с фильтрацией с вводом в ЭВМ), цифровая электроника и другое.
      Возможна инструментальная обработка (от лазерной резки до токарно-фрезерных работ, гибка металла, шелкография...) для изделий радиоэлектроники.
      Возможное написание тестовых программ под Atmel  (для запуска изделия).
      Также разработка внешней звуковой техники на основе PCM микросхем фирмы Техас Инструмент (типа внешней звуковой карты под определенные задачи: с микшированием, от микрофоном с фантомным питанием...).
      Возможно изготовление единичных образцов или сигнальных для проверки.
      г. Краснодар leonmezon@mail.ru
  • Сообщения

    • Всем привет. Тут писали по поводу дрейфа луча, который убирается путем склеивания  транзисторов...... Ничего не клеил а просто сравнил новые и те которые стояли...... Старые выпаял и проверил транзистор -тестером китайским......Короче старые коэф h 145 - один......96 - другой!!!!!!Это короче не два плеча...... а плечо с ногой сравнить можно.....В общем . Из новых минимальное усиление где то в районе 190 и выше. Подобрал из новых один 193  второй 192..... Впаял . Тестил в районе часа, все нормально. Пока долго не работал, но будем посмотреть....
    • Я тоже не против, хотел где нибудь пп заказать, но ни как не получается, так как с этим ни разу не сталкивался, с заказом пп на производство. Одну плату точно возьму) 
    • @Denisdenis если будет полезным, то вот мой ресчёт транса дежурки, (тр. из атх блока EEL16), сердечник был без зазора, я задал зазор 0.2мм, что бы по боковым кернам положить бумажки по 0.1 мм первичка разделена на две части, вторичка между первичками, витки вторички по центру каркаса, на всю длину не распределял, фазировку соблюдал, м/с tny275, все завелось сразу, только вот свистело силовой трансформатор на EI33 мотал без разделения первички, в начале первичка, затем вторичка, я делал ЛБП на ток до 8 ампер, дроссель после выпрямителя на кольце, изготовил новый (при настройке использовал первый попавшийся примерно подходящий) посчитав как положенно, но правда в притык, но мне и долговременная нагрузка на 8 ампер не нужна затем после окончательной проверки выпаял, трансы дежурки и силовой и дроссель, пропитал в вакууме (компрессор от холодильники -шланг- банка с крышкой) лаком мл92, после чего стало абсолютно бесшумно! ещё раз под нагрузкой проверил, на 8 амперах, минут через 10 радиатор выпрямителя нагрелся до 50 гр, (включилось охлаждение), irf740, на ощуп холодные были, силовой трансформатор, тёплый дроссель холодный
    • У Вас разрешено прерывание по CCP, а обработчик CCP не написан и сделано ожидание флага в основном цикле. Поэтому вход в прерывание происходит от CCP, а попадает в обработчик TMR1, где Вы благополучно TMR1 зачем то сбрасываете... Кроме того, Вы в инициализации к чему то принудительно устанавливаете флаг CCPIF вместо его сброса. Cброс флага TMR1 не делаете вообще, значит, скорее всего, сразу после разрешения глобальных прерываний программа влетит в обработчик, ибо флаг взводится независимо от разрешения прерываний по любому переполнению счетчика. Совершенно непонятно зачем Вы сбрасываете регистр захвата CCPR1. Этот регистр в режиме захвата пишется из таймера, а читается после события захвата (по флагу CCPIF), зато сам TMR1 в инициализации не сбрасываете вообще (это необязательно в существующей задаче, но хоть логично для общего порядка). В общем написана какая то каша....
    • Falanger чем заменить LM358?  Ранее писал что мин ток при кз 2,2А. R8 1КОм (до этого было все прекрасно- начиналось от 0.01А). Сегодня занялся бп, взял мотор 12В (от дворников авто) подключил а стабилизации тока и напряжения  нет , выставил 12В ток увеличиваю мотор работает, ток уменьшаю падает напряжение. Сделал КЗ решил посмотреть реакцию переменника R7 при замыкании контактов (имитация крайне левого и крайне правого положения).  в итоге напряжение на х.х. при включении бп 5в и мееедленно растет по десятым долям. По моему лм-ка полное г.....но.