чудной... сначала в прерывании вызвал инит_пвм, потом в инит_пвм прописал окр0а=0 т.е. при каждом обороте инт'а он сначала чистится, потом опять записывается... так и не понял, кто у тебя i сбрасывает обратно, только в майне ещё перед тем как всё останавливать, проверь что кнопка отпущена. зачем тебе разрешать прерывания в прерыввнии и ничего при этом не делать? при выходе из прерывания компилер и сам их разрешит, а так ты можешь стек сорвать (новое прерыввние будет вызываться внутри предыдущего... ______ если кроме пвм'а мк больше ничем не занят, то и прерывание тебе никчему, просто в цикле майна проверяй нажатие кнопки и пока нажата делай свой старт_пвм, иначе {стоп_пвм; и=0;}; это так беглым взглядом...
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Чт май 31, 2018 23:43:15
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Работать с кнопкой черезвнешнее прерывание - глупо. 1. Для кнопки не нужно такое быстродействие. Для неё достаточно опроса раз в 20-50 mS. Даже если это будет кнопка аварийного останова какого-нибудь чудо агрегата 2. Обработка внешним прерыванием накладывает ряд проблем, одна из которых - дребезг. 3. Слишком жирно выделять кнопке целый периферийный модуль. Облезет. 4. Если кнопок будет больше, чем ног, способных на прерывание, то Вы зайдёте в тупик. 5. Внешним прерыванием можно обработать только событие (нажалась/отжалась) кнопки. Про обработку длительных нажатий можете забыть. 6. Ой, устал писать ....
Работать с кнопкой черезвнешнее прерывание - глупо. 1. Для кнопки не нужно такое быстродействие. Для неё достаточно опроса раз в 20-50 mS. Даже если это будет кнопка аварийного останова какого-нибудь чудо агрегата 2. Обработка внешним прерыванием накладывает ряд проблем, одна из которых - дребезг. 3. Слишком жирно выделять кнопке целый периферийный модуль. Облезет. 4. Если кнопок будет больше, чем ног, способных на прерывание, то Вы зайдёте в тупик. 5. Внешним прерыванием можно обработать только событие (нажалась/отжалась) кнопки. Про обработку длительных нажатий можете забыть. 6. Ой, устал писать ....
Хоть и туго, но я это и сам понимаю. Знаний маловато в этой теме, но я пытаюсь. Так, поморгать светодиодами и т.д. - не проблема. Да и тут вроде задачка простейшая, но вот уперся в стену. Сначала пробовал через опрос кнопки- ничего не получается. Ради интереса , зашел через прерывание, там хоть какой-то результат получился и в Протеусе и в железе. Но не совсем то, что нужно. Чутье подсказывает, что где-то косячу в коде с кнопкой (выше выкладывал кусок) Может надо дополнительно переменную ввести или еще что!?. Поэтому и прошу подсказку .
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
1 - Проектирование сверху вниз. Устройство. Дробление устройства на модули. 2 - Время реакции системы. Время реакции отдельных модулей. 3 - Модульность программ.
Программу нужно разделить на модули. Опрос кнопок - отдельный модуль. ШИМ - отдельный модуль. Сам алгоритм программы - отдельный модуль. 1 - Опрос кнопок. Кнопки - человекоинтерфейс. То есть медленный. Временные рамки - десятки и сотни миллисекунд. Внешнее прерывание для опроса кнопок есть смысл использовать только в единственном случае - энергосбережение. 2 - Взаимодействие модулей. 3 - Автоматное программирование.
При использовании такого подхода и правил создание любых проектов ускоряется в разы. Программа собирается как конструктор из кубиков-модулей.
На данный момент вы оперируете примитивами-процедурами. При наработке правил, подходов вы уже оперируете "макросами".
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
По IARу есть спецы? В общем чет я в ступор упал. Захотел в проекте вектора использовать, делаю инклюд <vector>, а оно ошибками на неизвестный тип _ULONGLONG сыпет. Задефайнить самому то не проблема, но хотелось бы по правильному проблему решить.
P.S. отбой котаны, мой косяк - видимо когда-то делал поиск с заменой и случайно похреначил родные иаровские хидеры. Нашел проблему.
Всем привет пытаюсь разобраться как пользоваться библиотекой LCD для вывода информации на дисплей и не получается скомпилировать проект в программе AVR STUDIO 6.0. Пишит как на снимки в чем может быть ошибка. Также скидываю файл прошивки целиком.
Заголовок сообщения: Развернуть байт в последовательность битов
Добавлено: Ср авг 08, 2018 04:07:38
Опытный кот
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
А как эффективно развернуть байт в последовательность битов с целью передать его через "дрыгоножество" ? Проверить очередной бит на асме - две команды, ASL и BRCS. А на Си? Пока ничего не приходит в голову, кроме, как сдвигать бит маски (0x80). Заодно он и послужит концом цикла... Задача - выплюнуть байт из программы прерывания в 74HC595, поэтому хочется, чтобы она была предельно короткой.
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
цикл 8 раз { если (байт и 0х80) отправим 1 иначе 0 байт<<1 } байт конечно пострадает, но будет отправлен (кстати туь тже в него и принимать можно
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
for(char i = 0; i < 8; ++i){ PORTX &= ((byte << i) | 0x7F); } и байт не пострадает, и на порту только одна ножка будет дрыгаться. Если нужна другая ножка порта, то добавляем еще один сдвиг и меняем маску.
не правильно - если PORTX.7 == 0 то его уже не взвести тогда уж PORTX=((byte << i) | (~0x10)) & (PORTX | 0x10);
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Наиболее выгодный по размеру кода и скорости - вариант с сдвигом самих данных и проверкой одного бита (0x80 или 0x01 в зависимости от направления сдвига). То, что данные при этом портятся, как правило, не страшно, потому что это обычно аргумент функции, всё равно уничтожаемый при выходе из неё. Т.е. что-то вроде:
Добрый день. Начал изучать Си для AVR В качестве объекта изучения взял вот этот проект: https://www.radiokot.ru/circuit/digital/home/74/ , по причине наличия открытого исходника и необходимости изготовить аналогичный термостат. Но когда перевел исходник в HEX-файл, оказалось что контроллер отказывается "дрыгать ножками". Сколько не пытался самостоятельно обнаружить ошибку, так и не смог разобраться. Как комилятор использовал программу Code Vision AVR. Если можно подскажите где может быть ошибка в данном проекте.
Вложения:
Комментарий к файлу: В архиве имеется файл-симуляция в Протеусе 01.rar [90.23 KiB]
Скачиваний: 228
_________________ Днем не спишь, ночью не ешь - конечно устаешь.
1. Как правильно называется язык Си, на котором программируются контроллеры AVR (Atmega8 в частности) через программную среду AVR Studio 4 и 5? Что это - С, С++, С# или какая-то другая разновидность языка Си?
2. Не могу понять синтаксис этого долбаного языка.
На каком языке этот код, что не принимает MVS-2017? Находит 6 ошибок.
Вложения:
Комментарий к файлу: Скриншот из Visual Studio 2017 Fehler.jpg [59.83 KiB]
Скачиваний: 438
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения