Помогите понять, CodeVisionAVR не загружает в Arduino

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Чт мар 17, 2022 11:07:24

Сообщение Shumaher »

Очень странная ситуация. CodeVisionAVR не выгружает в Arduino. Есть два проекта близнеца, в одном выгружает в другом нет. Пробовал создать новый, та же история. Что это может быть? Грешу на WIN8. Предыдущий проект из под 7-ки. Не понятно. И ничего не говорит, просто ничего не происходит.

Добавлено after 4 hours 33 minutes 13 seconds:
Ещё поигрался, копирую рабочий проект, заменяю основной файл и перестаёт работать. Уже тупо скопировал текст и заменил некоторые заголовочные файлы и опять перестало работать. Мистика((
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А зачем CodeVisionAVR для адуринок, если есть ардуиноIDE??
:shock:
Тем более, что основа ардуиноIDE С++ (допускается и простой Си но тяготеющий к авр студио - GCC)...
:roll:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 760
Зарегистрирован: Сб окт 22, 2016 17:33:32
Откуда: кг

Сообщение Карбофос »

А чё вы все так вперлись в этот кодвижнавр? Вам пообещали x3 быстродействие? На той-же тактовой? Так не бывает.

Какие-то старые nano только 57600 понимали, uno 115200, в чем между ними разница хз.
Может, загрузчик из новой версии IDE обновить?
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У "стандартных" нанок было две версии бутлоадера, устанавливаемого при изготовлении.
Какой конкретно в конкретной платке - смотреть самостоятельно надо.
Но актуально это только для перепрограммирования через бутлоадер.
Оба варианта бутлоадера можно прошить через ISP из-под самой IDE.
:roll:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 4
Зарегистрирован: Чт мар 17, 2022 11:07:24

Сообщение Shumaher »

[uquote="Карбофос",url="/forum/viewtopic.php?p=4200085#p4200085"]А чё вы все так вперлись в этот кодвижнавр? Вам пообещали x3 быстродействие? На той-же тактовой? Так не бывает.

Какие-то старые nano только 57600 понимали, uno 115200, в чем между ними разница хз.
Может, загрузчик из новой версии IDE обновить?[/uquote]

Извините, проблема в другом. Он мне кажется удобным. Посоветуйте IDE с выгрузкой в Ардуино.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

АрдуиноIDE 1.8.19
Любая IDE генерирующая интел хекс8 для МК при последующей загрузке через программатор через ISP.
Однако... следует учитывать установленные в адуринке при изготовлении комплекты фузов и бутлоадер.
Или переустанавливать их самостоятельно вручную под текущий проект.
8)
Реклама
Родился
Сообщения: 4
Зарегистрирован: Чт мар 17, 2022 11:07:24

Сообщение Shumaher »

[uquote="BOB51",url="/forum/viewtopic.php?p=4200279#p4200279"]АрдуиноIDE 1.8.19
Любая IDE генерирующая интел хекс8 для МК при последующей загрузке через программатор через ISP.
Однако... следует учитывать установленные в адуринке при изготовлении комплекты фузов и бутлоадер.
Или переустанавливать их самостоятельно вручную под текущий проект.
8)[/uquote]
Это понятно, мне нравилось через USB выгружать. Только расслабился с программаторами). А тут такая непонятка. И она действительно зависит от самого содержимого программы. Буду дальше копать.

Да нет ребята, фигня какая то, просто копирую текст в исходники и трындец. Даже не компилируется. Я маму....
Ну похоже это баг винды и AD. Я давно 8ку ненавижу аж спать не могу. Права слетают.
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Копирование исходников тоже свои хитрости имеет...
:wink:
Опытный кот
Аватара пользователя
Сообщения: 760
Зарегистрирован: Сб окт 22, 2016 17:33:32
Откуда: кг

Сообщение Карбофос »

Shumaher писал(а):просто копирую текст в исходники и трындец. Даже не компилируется
Чудесно.
Вот бы уехать к вам.
А откуда вы?
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

К примеру, что первое попалось:
avr-gcc
Спойлер

Код: Выделить всё

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

typedef struct{
   volatile uint8_t * port;
   uint8_t            and;
   uint8_t            or;
} seg_pin_t;

#define pn(p,b) {&PORT ## p, ~_BV(b), _BV(b)}

#define A   _BV(0)
#define B   _BV(1)
#define C   _BV(2)
#define D   _BV(3)
#define E   _BV(4)
#define F   _BV(5)
#define G   _BV(6)
#define H   _BV(7)

#define DIG0   (A+B+C+D+E+F)
#define DIG1   (B+C)
#define DIG2   (A+B+G+E+D)
#define DIG3   (A+B+C+D+G)
#define DIG4   (B+F+G+C)
#define DIG5   (A+F+G+C+D)
#define DIG6   (A+C+D+E+F+G)
#define DIG7   (A+B+C)
#define DIG8   (A+B+C+D+E+F+G)
#define DIG9   (A+B+C+D+F+G)

const __flash seg_pin_t pins[8] = {
  pn(B,0),
  pn(C,0),
  pn(D,0),
  pn(B,2),
  pn(C,2),
  pn(D,2),
  pn(B,4),
  pn(C,4)
};

const __flash seg_pin_t commons[4] = {
  pn(D,1),
  pn(D,4),
  pn(B,1),
  pn(C,1)
};

uint8_t scr[4] = {DIG5,DIG2,DIG3,DIG4};

ISR(TIMER0_OVF_vect){
   static uint8_t com;

   const __flash seg_pin_t *p = commons+com;

   *p->port &= p->and;

   if(++com >= 4) com = 0;

   uint8_t d = scr[com];
   d = ~d;

   p = pins;
   for(uint8_t i=0; i<8; i++, d>>=1){
      *p->port = (*p->port & p->and) | (d & 1 ? p->or : 0);
      p++;
   }

   p = commons+com;
   *p->port |= p->or;
}

int main(void){
   DDRB = 255;
   DDRC = 255;
   DDRD = 0x7F;
   PORTD = 0x80;

   TCCR0 = 4;
   TIMSK = _BV(TOIE0);
   sei();

   while(1);
}

Код: Выделить всё

AVR Memory Usage
----------------
Device: atmega16

Program:     432 bytes (2.6% Full)
(.text + .data + .bootloader)

Data:          5 bytes (0.5% Full)
(.data + .bss + .noinit)
cvavr
Спойлер

Код: Выделить всё

#include <mega16.h>
// Declare your global variables here

#define uint8_t unsigned char

typedef struct {
   volatile uint8_t * port;
   uint8_t            and;
   uint8_t            or;
} seg_pin_t;

#define pn(p,b) {&PORT ## p, ~_BV(b), _BV(b)}

#define _BV(bit) (1 << (bit))

#define A   _BV(0)
#define B   _BV(1)
#define C   _BV(2)
#define D   _BV(3)
#define E   _BV(4)
#define F   _BV(5)
#define G   _BV(6)
#define H   _BV(7)

#define DIG0   (A+B+C+D+E+F)
#define DIG1   (B+C)
#define DIG2   (A+B+G+E+D)
#define DIG3   (A+B+C+D+G)
#define DIG4   (B+F+G+C)
#define DIG5   (A+F+G+C+D)
#define DIG6   (A+C+D+E+F+G)
#define DIG7   (A+B+C)
#define DIG8   (A+B+C+D+E+F+G)
#define DIG9   (A+B+C+D+F+G)

flash const seg_pin_t pins[8] = {
  pn(B,0),
  pn(C,0),
  pn(D,0),
  pn(B,2),
  pn(C,2),
  pn(D,2),
  pn(B,4),
  pn(C,4)
};

flash const seg_pin_t commons[4] = {
  pn(D,1),
  pn(D,4),
  pn(B,1),
  pn(C,1)
};

uint8_t scr[4] = {DIG5,DIG2,DIG3,DIG4};

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{  uint8_t d; uint8_t i;
   static uint8_t com;

   flash const seg_pin_t *p = commons+com;

   *p->port &= p->and;

   if(++com >= 4) com = 0;

   d = scr[com];
   d = ~d;

   p = pins;
   for(i=0; i<8; i++, d>>=1){
      *p->port = (*p->port & p->and) | (d & 1 ? p->or : 0);
      p++;
   }

   p = commons+com;
   *p->port |= p->or;
}


void main(void)
{
   DDRB = 255;
   DDRC = 255;
   DDRD = 0x7F;
   PORTD = 0x80;

   TCCR0 = 4;
   TIMSK = _BV(TOIE0);
   
   #asm("sei")

   while(1);
}

Код: Выделить всё

Program size: 254 words (508 bytes), 3,1% of FLASH
11 words (22 bytes), 4,2% reduced by Code Compression
Родился
Сообщения: 4
Зарегистрирован: Чт мар 17, 2022 11:07:24

Сообщение Shumaher »

[uquote="BOB51",url="/forum/viewtopic.php?p=4200334#p4200334"]Копирование исходников тоже свои хитрости имеет...
:wink:[/uquote]
В общем на этом проекте он рожал не корректный файл .epp из за того, что переменные не были инициализированы при объявлении.
То есть что, это считается обязательным?
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У каждого компилятора (или того же шпротеуса) свои правила.
Их вычитывать надо весьма внимательно и долго
8)
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Shumaher писал(а):То есть что, это считается обязательным?
Нет, необязательным.
А для шпротеуса не достаточно просто подкинуть файлик .epp, нужно еще выполнить Debug -> Reset persistent model data.
И .epp шпротеус не принимает, нужен бинарник, бинарник делается с помощью средств cvavr Run the chip programmer, File load eeprom, выбрать тип .epp, File save eeprom, выбрать тип .bin, потом в шпротеусе скармливаем наш .bin файлик, выполняем Debug -> Reset persistent model data, запускаем отладку, выбираем Debug -> AVR -> Eprom memory и любуемся происходящим.
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Ср фев 23, 2022 15:40:56

Сообщение PE4ENbKA_173 »

[uquote="BOB51",url="/forum/viewtopic.php?p=4200057#p4200057"]Тем более, что основа ардуиноIDE С++ (допускается и простой Си но тяготеющий к авр студио - GCC)...
:roll:[/uquote]
Не соглашусь с этим утверждением. Попытка использовать классы а не структуры привела к сообщению что АВР мк не поддерживает с++ языки. Основа может и С++ но для работы не с АВР
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это относительно компилятора ардуиноIDE классы не применяются?...
:shock:
Или относительно того компилятора, что в АВР студио имеется?
За АВР/микрочип студио компилятор не скажу - не пользовался, а вот у ардуиноIDE основной вариант самодельных библиотек именно в виде классов делается.
В то же время и Си вариант вполне работоспособен (единственно файлы также с расширением *.cpp использовать надо).
Как сам компилятор устроен и дополнительные настройки - это уже больше специалистов глубокозакопания интерес.
На практике и того что есть вполне достаточно для перекрытия большинства практических задач.
8)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Сообщение Alex_641 »

А коде вижион и ардуино , чем связаны ?
Не спрашивай по ком звонит колокол, он звонит по тебе !
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Вероятно только загрузчиком *.hex файла программы.
Или второй вариант - взята платка адуринки, но программа разрабатывается и компилируется в CodeVisionAVR.
Только вот в этом случае саму программу и прошивку надо делать также по правилам CodeVisionAVR через ISP да предварительно удалив штатный бутлоадер ардуинки, дабы не создавал лишних проблем.
8)
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

BOB51 писал(а):Только вот в этом случае саму программу и прошивку надо делать также по правилам CodeVisionAVR через ISP да предварительно удалив штатный бутлоадер ардуинки,
Ерунду не несите.
https://youtu.be/qRG39L_sCJc
Ответить

Вернуться в «AVR»