Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт мар 17, 2022 17:04:37

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

Добавлено after 4 hours 33 minutes 13 seconds:
Ещё поигрался, копирую рабочий проект, заменяю основной файл и перестаёт работать. Уже тупо скопировал текст и заменил некоторые заголовочные файлы и опять перестало работать. Мистика((

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

Чт мар 17, 2022 18:42:22

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

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

Чт мар 17, 2022 19:34:20

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

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

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

Пт мар 18, 2022 09:19:31

У "стандартных" нанок было две версии бутлоадера, устанавливаемого при изготовлении.
Какой конкретно в конкретной платке - смотреть самостоятельно надо.
Но актуально это только для перепрограммирования через бутлоадер.
Оба варианта бутлоадера можно прошить через ISP из-под самой IDE.
:roll:

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

Пт мар 18, 2022 09:27:50

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

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


Извините, проблема в другом. Он мне кажется удобным. Посоветуйте IDE с выгрузкой в Ардуино.

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

Пт мар 18, 2022 09:37:59

АрдуиноIDE 1.8.19
Любая IDE генерирующая интел хекс8 для МК при последующей загрузке через программатор через ISP.
Однако... следует учитывать установленные в адуринке при изготовлении комплекты фузов и бутлоадер.
Или переустанавливать их самостоятельно вручную под текущий проект.
8)

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

Пт мар 18, 2022 10:00:55

АрдуиноIDE 1.8.19
Любая IDE генерирующая интел хекс8 для МК при последующей загрузке через программатор через ISP.
Однако... следует учитывать установленные в адуринке при изготовлении комплекты фузов и бутлоадер.
Или переустанавливать их самостоятельно вручную под текущий проект.
8)

Это понятно, мне нравилось через USB выгружать. Только расслабился с программаторами). А тут такая непонятка. И она действительно зависит от самого содержимого программы. Буду дальше копать.

Да нет ребята, фигня какая то, просто копирую текст в исходники и трындец. Даже не компилируется. Я маму....
Ну похоже это баг винды и AD. Я давно 8ку ненавижу аж спать не могу. Права слетают.

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

Пт мар 18, 2022 12:16:43

Копирование исходников тоже свои хитрости имеет...
:wink:

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

Вс мар 20, 2022 23:06:02

Shumaher писал(а):просто копирую текст в исходники и трындец. Даже не компилируется

Чудесно.
Вот бы уехать к вам.
А откуда вы?

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

Пн мар 21, 2022 08:33:26

К примеру, что первое попалось:
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

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

Пн мар 28, 2022 10:28:32

Копирование исходников тоже свои хитрости имеет...
:wink:

В общем на этом проекте он рожал не корректный файл .epp из за того, что переменные не были инициализированы при объявлении.
То есть что, это считается обязательным?

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

Пн мар 28, 2022 10:49:36

У каждого компилятора (или того же шпротеуса) свои правила.
Их вычитывать надо весьма внимательно и долго
8)

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

Пн мар 28, 2022 21:13:37

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 и любуемся происходящим.

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

Чт май 05, 2022 16:42:33

Тем более, что основа ардуиноIDE С++ (допускается и простой Си но тяготеющий к авр студио - GCC)...
:roll:

Не соглашусь с этим утверждением. Попытка использовать классы а не структуры привела к сообщению что АВР мк не поддерживает с++ языки. Основа может и С++ но для работы не с АВР

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

Пт май 06, 2022 21:04:53

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

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

Пт май 06, 2022 21:11:47

А коде вижион и ардуино , чем связаны ?

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

Пт май 06, 2022 21:19:12

Вероятно только загрузчиком *.hex файла программы.
Или второй вариант - взята платка адуринки, но программа разрабатывается и компилируется в CodeVisionAVR.
Только вот в этом случае саму программу и прошивку надо делать также по правилам CodeVisionAVR через ISP да предварительно удалив штатный бутлоадер ардуинки, дабы не создавал лишних проблем.
8)

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

Сб май 07, 2022 14:11:37

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