Доброго времени суток. Помогите адоптировать кусочек кода под CodeVision.
Начну из далека. На сайте есть проэкт "БП с микроконтроллерным управлением и регулировкой параметров при помощи энкодера." есть исходники написаные в CodeVision.Используется экранчик bc1602. А мне бы хотелось в этом пролэкте использовать графический lcd на на st7567.....нашол код под него но он написан в avr studio .
В CodeVision он не работает.....компилируется и т.д но экран не реагирует.......
Не с того не с сего перестал работать CVAVR версии 3.12, пропали все кнопки ( или как они там называются), в основном окне только окно с программой и то маленького размера. Переустановка не помогла, антивирусник ничего не нашёл... Может было такое у кого нить?
_________________ Не спрашивай по ком звонит колокол, он звонит по тебе !
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Проект, исходный текст, прошивка для CodeVisionAVR1.24.7 здесь
Сам с CodeVision пока никак, уровень могу прошить AVR на программаторе tl866. Просьба, нужен HEX или BIN и как поставить фьюзы. У меня не получается устройство работает, но не правильно.
Последний раз редактировалось foxmikola Вт апр 26, 2022 08:03:11, всего редактировалось 3 раз(а).
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сам с CodeVision пока никак, уровень могу прошить AVR на программаторе tl866. Просьба, нужен HEX или BIN и как поставить фьюзы. У меня не получается устройство работает, но не правильно.
HEX есть в архиве, прошивайте удобным вам методом. Фьюзы - выставить на работу от внутренего генератора на 8 МГц.
Добавлено after 17 minutes 55 seconds: Всем доброго дня! Поставил себе задачу впихнуть в ATTiny13A программу сбора показаний с нескольких DS18b20 и передачу из по UART. Помощник CVAVR сделал все необходимые первичные настройки, активировал 1-wire и тд, но даже без UARTa компилятор ругается на недостаток RAM (Linker error: global RAM variables size: 81 bytes is too large) ! Я просто выхожу из мастера генерации кода и пробую всё собрать!
СпойлерBuild configuration: Release Chip: ATtiny13A Clock frequency: 1,200000 MHz Memory model: Tiny Optimize for: Size (s)printf features: int, width (s)scanf features: int, width Promote 'char' to 'int': Yes 'char' is unsigned: Yes global 'const' stored in FLASH: Yes 8 bit enums: Yes Enhanced function parameters passing: Yes Automatic register allocation: Yes
Build: 7 764 line(s) compiled 1 error(s) No warnings
Bit variables size: 0 byte(s)
Data Stack area: 0x60 to 0x6F Data Stack size: 16 byte(s) Estimated Data Stack usage: 0 byte(s)
RAM Global variables area: 0x70 to 0xC0 RAM Global variables size: 81 byte(s)
EEPROM usage: 0 byte(s), 0,0% of EEPROM Честно сказать, я в замешательстве, ведь у многих работает (судя по статьям в интернете), правда все делают для одного датчика... У меня задача использовать несколько, максимально возможное количество.
Попробовал уменьшить дефайн MAX_DS1820 ... при "2" - проект собирается: СпойлерBuild configuration: Release Chip: ATtiny13A Clock frequency: 1,200000 MHz Memory model: Tiny Optimize for: Size (s)printf features: int, width (s)scanf features: int, width Promote 'char' to 'int': Yes 'char' is unsigned: Yes global 'const' stored in FLASH: Yes 8 bit enums: Yes Enhanced function parameters passing: Yes Automatic register allocation: Yes
Build: 6 764 line(s) compiled No errors No warnings
Bit variables size: 0 byte(s)
Data Stack area: 0x60 to 0x6F Data Stack size: 16 byte(s) Estimated Data Stack usage: 0 byte(s)
RAM Global variables area: 0x70 to 0x8A RAM Global variables size: 27 byte(s)
EEPROM usage: 0 byte(s), 0,0% of EEPROM Program size: 226 words (452 bytes), 44,1% of FLASH 0 words (0 bytes), 0,0% reduced by Code Compression Может какие настройки в компиляторе нужно сделать?
Пустая программа, которая не помещается: Спойлер
Код:
/******************************************************* This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator
Chip type : ATtiny13A AVR Core Clock frequency: 1,200000 MHz 9.6 Mhz / 8 preskaller Memory model : Tiny External RAM size : 0 Data Stack size : 16 *******************************************************/
#include <tiny13a.h>
// 1 Wire Bus interface functions #include <1wire.h>
// DS1820 Temperature Sensor functions #include <ds1820.h>
// maximum number of DS1820 devices // connected to the 1 Wire bus #define MAX_DS1820 8
// number of DS1820 devices // connected to the 1 Wire bus unsigned char ds1820_devices; // DS1820 devices ROM code storage area, // 9 bytes are used for each device // (see the w1_search function description in the help) unsigned char ds1820_rom_codes[MAX_DS1820][9];
// Declare your global variables here
void main(void) { // Declare your local variables here
// 1 Wire Bus initialization // 1 Wire Data port: PORTB // 1 Wire Data bit: 4 // Note: 1 Wire port settings are specified in the // Project|Configure|C Compiler|Libraries|1 Wire menu. w1_init();
// Determine the number of DS1820 devices // connected to the 1 Wire bus ds1820_devices = w1_search(0xf0,ds1820_rom_codes);
while (1) { // Place your code here
} }
UPD: думаю мне понятно... 9 bytes are used for each device ... 8 устройств Х 9 байт = 72 байта, что уже больше 64 имеющихся в Тиньке...
_________________ Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
Из этой части кода, которым поделились, оптимизацию памяти вероятно сделать невозможно. Код, предложенный в компиляторе, часто является примерным и не оптимизированным (для памяти). Он часто универсален. Нужно переделывать (по возможности) код в других файлах. Например, почему данные всех датчиков хранятся в памяти? Выполнить действия с одним, определиться с результатом и загрузить в память другое. Максимум для сохранения: текущих температур как окончательный результат (но для этого тоже нужен объем памяти). И лично: зачем нужен такой минималистичный вариант? Лучше замените контроллер. Нет даже место запускать ни один алгоритм статистической обработки данных, хоть усреднение, хоть moving average ... о более сложных алгоритми просто нет смысла думать. И в конце: показания температуры будут колебаться +/-x.xx, что не связано с физическим процессом.
Из этой части кода, которым поделились, оптимизацию памяти вероятно сделать невозможно. Код, предложенный в компиляторе, часто является примерным и не оптимизированным для памяти. Нужно переделывать (по возможности) код в других файлах. Например, почему данные всех датчиков хранятся в памяти? Выполнить действия с одним, определиться с результатом и загрузить в память другое. Максимум для сохранения: текущих температур как окончательный результат (но для этого тоже нужен объем памяти). И лично: зачем нужен такой минималистичный вариант? Лучше замените контроллер. Нет даже место запускать ни один алгоритм статистической обработки данных, хоть усреднение, хоть moving average ...
Да, посмотрел в сторону Тини85 - размер тот же, возможностей намного больше. И цена та же... На счёт - зачем хранить - судя по всему, основной объём занимает хранение ROM-кодов датчиков (те самые 9 байт на датчик). А без их хранения - получится ли их все опрашивать? Пока не понял. В любом случае - выбор в пользу тини85 даёт прирост в ОЗУ до 512 Байт. Всё поместится.
Теперь стала задача сделать программный UART, ибо не доглядел, что аппаратного там нет...
_________________ Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
... основной объём занимает хранение ROM-кодов датчиков (те самые 9 байт на датчик).
Можно сделать функцию: считать датчик (возвращает, например, уже считанную текущую температуру) и применить ко всем датчикам. Таким образом, промежуточные результаты чтения регистров не будут постоянно сохраняться. При необходимости сохраните только уже считанные температуры с каждой датчик (8 штук * 2 байт).
У блока USART есть три прерывания окончание приема, окончание передачи и опустошение буфера. Но в CV доступны только первые два. Это нормально или как то можно третье прерывание завести?
Есть ли возможность в CVAVR встроенными средствами разместить flash константу по фиксированному адресу?
Придумал пока использовать asm вставку:
Код:
// область глобальных переменных в отдельном С-файле: #asm .cseg .org 8000 // адрес .db 0x64 // константа #endasm
Код:
// В main: OSCCAL = *((volatile flash uint8_t *) OSCCAL_CONST_ADRESS);
Проблема в том что компилятор дальше пытается разместить за этой константой блок данных или код из других файлов, который вылезает далеко за пределы флеш Atmega168. При этом в середине флеш оказывается свободна. То есть решение не является правильным.
В Keil MDK или GCC для этого я создавал scatter-файл или скрипт линкера где делал собственные сегменты и назначал в таких сегментах нужные мне константы.
1. Калибровка RC генератора. Вам наверно известно что при запуске загружается значение в OSCCAL для 1МГц(Например Atmega8 и др.). Для 8МГц надо считать программатором константу и записать в флеш или еепром. Дело не очень хлопотное когда программируется только 1 устройство. Можно и программу пересобрать. А когда 10-100 штук? А когда приходит время исправлений или обновлений, адреса калибровок начинают съезжать. Это лишний источник ошибок. 2. Работа с бутлоадером. Для этого надо разместить функции и блоки данных по фиксированным адресам. 3. Эмуляция еепром во флеш памяти. Надо назначать переменным адреса страниц не пересекающиеся с адресами кода.
Конечно, 2 и 3 сегодня уже не сильно актуально для авр. Но 3 вариант лично использовал на Stm без собственной еепром.
Доброго всем вечера прошу помощи. Перестал работать интерфейс. .... Основное окно Codevision замораживается, пропадают все кнопки. Просто серое окно.. Работает только выход, свернуть или закрыть программу с несохраненными данными по по нажатию кнопок сверху слева на окне. CAVR 3.12, 3.14, Windows 8 64 бит.
Пробовал на разных версиях везде одно и тоже. Поставил на другой комп все работает. НЕ могу понять где искать.
Попробую. Но в Вашем примере хотя-бы окна видны и кнопки меню. У меня просто серое окно. Доберусь через пару часов до компа проверю. Надеюсь сработает.
Добавлено after 2 hours 57 minutes 22 seconds: УУУРРААА!!! Работает!!!! Нужно было удалить файлы из папки c:\ProgramData\HP InfoTech\CodeVisionAVR\
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения