Страница 415 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 17:45:18
AVK
[uquote="veso74",url="/forum/viewtopic.php?p=4623277#p4623277"]How to copy a char array in C?[/uquote]
Да причем тут это? Как копировать массив я знаю, вот же функцию привел. Проблема в то что если массив источник во флеше она не компилируется.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 17:50:15
veso74
Дайте весь фрагмент кода.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:01:44
ARV
Как описан массив во флэш? Ведь не просто char srr[]=’ 123’; а как-то иначе.
Как описан указатель функции, использующей эти строки? Совпадает ли его тип с типом массива?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:07:31
AVK
flash char q[]="stndtestwaitload hotPreHheadbodytail manRhotSelfRheadeltrect SsTNBKsNBKw endstopflowSPANNODSFREQTAD-PowHPowLDS0EDS1ECOLDNLOAnoPSscPC";
вот именно он, функцию копирования я привел, все типа разумеется соответствуют
если убрать модификатор flash все работает, но теряется весь смысл данной конструкции.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:09:18
ARV
Функция, что вы привели, работает (ожидает на входе) указатель другого типа - на ОЗУ, а у вас надо на ФЛЭШ

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:10:04
AVK
Я таки это понимаю, как можно изменить что бы заработало?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:11:24
ARV
Сравните типы указателя в параметре функции и массива. Указатель должен иметь тот же тип, что и массив. Т.е. до звездочки должно быть точно то же, что и до имени массива.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:12:41
AVK
В CV есть вообще указатели на флеш?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:14:29
ARV
Если есть flash char, почему бы не быть flash char*?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 07, 2024 18:26:28
AVK
[uquote="ARV",url="/forum/viewtopic.php?p=4623294#p4623294"]Если есть flash char, почему бы не быть flash char*?[/uquote]
Плохо быть глупым, вот я глупый, это печально.
Заработало!! Спасибо вам!!!

void copy (char *mas, flash char *mas1, char adr, char adr1, char size)
{
for (i=0; i<size; i++)
mas[adr+i]=mas1[adr1+i];
}

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср июн 18, 2025 14:40:50
Serzh2000
где скачать библиотеку TM1637 для CodeVisionAVR
НИКАК НЕ МОГУ ПОДКЛЮЧИТЬ ДИСПЛЕЙ TM1637 к атмеге 8

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт июн 20, 2025 10:18:36
Аlex
Serzh2000 писал(а):скачать библиотеку TM1637
Там же управление обычным I2C. Какая библиотека для этого нужна ? :roll:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт июн 20, 2025 10:39:38
>TEHb<
Не совсем. Там всё довольно через зад относительно нормального I2C. Но выкрутиться можно.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт июн 20, 2025 10:46:41
VNS
[uquote="Serzh2000",url="/forum/viewtopic.php?p=4725356#p4725356"]НИКАК НЕ МОГУ ПОДКЛЮЧИТЬ ДИСПЛЕЙ TM1637 к атмеге 8[/uquote]
Если у вас готовый дисплей на данной микросхеме, то настоятельно рекомендую выпаять входные конденсаторы с выводов CLK и DIO. Так как они очень сильно "затягивают" уровни и тогда понадобится значительно увеличивать паузы… без конденсаторов I2С работает стабильно, без танцев с бубном.

Ну и в даташите всё о работе ТМ1637 подробно расписано (с примерами)…
TM1637.pdf
(712.75 КБ) 103 скачивания

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июн 28, 2025 23:06:06
kotneko
Добрый вечер ! Помогите,пожалуйста, с компиляцией и получения hex файла из этого исходника
https://radiokot.ru/forum/viewtopic.php ... 84#p791584

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн сен 08, 2025 10:42:30
Jon_Smeet
Вот здесь нашел пример придачи и опрос codevision i2c pcf8574. оба примера работают. смог понять как работать с периферией типа i2c pcf8574 без библиотек.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт сен 09, 2025 08:37:12
codenamehawk
kotneko писал(а):Помогите,пожалуйста, с компиляцией и получения hex файла из этого исходника
Этого недостаточно для получения рабочей прошивки.
Нужны все файлы проекта, в которых учитывается примненный процессор и код программы для него.
Создайте в CodeWizardAVR V1.25.9 новый проект для ATtiny2313, установите частоту проца 8,000000 MHz
В настройках подключите lcd модуль.
Скомпилируйте полученный проект.
Потом замените код на код из rc5_1.c, скомпилируйте и получите нех файл.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср сен 24, 2025 18:26:58
Alex_ka
Мужики. Ваша помощь нужна. Что то у меня в железе не хочет в еепром писать и читать то что мне нужно. Программа ошибок не выдает. Даю кусок программы, подскажите пожалуйста, что не так делаю. Только прошу если можно конкретно, так как я не сталкивался с еепром. При первом запуске на портах D0 и D1 нули, но если на портах B есть определенное состояние, то я не могу занести значение c и d в еепром, а потом их правильно считать и выставить на портах D0 и D1 то состояние, которое зависило от портов В. Кусок программы даю. Да. При формировании файла прошивок, флешь нормальная, а еепром какой то кастрированный получается ( и программатор подвисает при записи еепром. и это на разных версиях 2.05,3.12, 3.14.
#include <tiny2313a.h>
#include <delay.h>
int p;
int c=0;
int d=0;
eeprom char c_eep;
eeprom char d_eep;
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{ TCNT1H=0;
TCNT1L=0;
p++;
if(p>59) {p=0;}
}
void main(void)
{
c_eep=c;
d_eep=d;
#asm("sei")
m1:
PORTD.0=0;
PORTD.1=0;
delay_ms(1000);
while (1) {
if(PIND.5==0){delay_ms(1000);break; };
if(PIND.3==0){delay_ms(300);break; };
}
p=0;
delay_ms(100);
c=c_eep;
delay_ms(100);
d=d_eep;
delay_ms(100);
PORTD.0=c;
PORTD.1=d;
while(1) {
if(PINB.0 && !PINB.1 && !PINB.2 && !PINB.3) {c=0; d=0;c_eep=c; d_eep=d;delay_ms(2000);break;}
if(!PINB.0 && PINB.1 && !PINB.2 && !PINB.3){c=0; d=1;c_eep=c; d_eep=d;delay_ms(2000);break;}
if(PINB.0 && PINB.1 && !PINB.2 && !PINB.3) {c=1; d=0;c_eep=c; d_eep=d;delay_ms(2000);break;}
if(!PINB.0 && !PINB.1 && PINB.2 && !PINB.3) {c=1; d=1;c_eep=c; d_eep=d;delay_ms(2000);break;}
if(p==30){delay_ms(300);break;};
}
delay_ms(1000);
goto m1; }
}

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср сен 24, 2025 21:23:27
roman.com
писать и читать в еепром... это целая процедура))
у меня нет tiny2313... есть мега... но принцип везде одинаковый.

/////////////////////////////////////////////// запись EEPROM:
EEAR = x; // пишем адрес ячейки EEPROM в которую будем писать
EEDR = a; // пишем данные в регистр
EECR |= 0b00000100; // разрешаем запись в EEPROM
EECR |= 0b00000010; // команда запись в EEPROM
while(EECR & 0b00000010);// ждём окончания записи в EEPROM

/////////////////////////////////////////////// чтение EEPROM:
EEAR = x; // пишем адрес ячейки EEPROM которую будем читать
EECR |= 0b00000001; // команда читать EEPROM
a = EEDR; // читаем данные из регистра

:tea:

удобней делать в виде отдельной функции...

//////////////////////////////////////////////////////////////////////TX_EEPROM:
void TX_EEPROM(void)
{
/////////////////////////////////////////////// запись EEPROM:
EEAR = x; // пишем адрес ячейки EEPROM в которую будем писать
EEDR = a; // пишем данные в регистр
EECR |= 0b00000100; // разрешаем запись в EEPROM
EECR |= 0b00000010; // команда запись в EEPROM
while(EECR & 0b00000010);// ждём окончания записи в EEPROM
};
////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////RX_EEPROM:
void RX_EEPROM(void)
{
/////////////////////////////////////////////// чтение EEPROM:
EEAR = x; // пишем адрес ячейки EEPROM которую будем читать
EECR |= 0b00000001; // команда читать EEPROM
a = EEDR; // читаем данные из регистра
};
////////////////////////////////////////////////////////////////////////////////

теперь осталось только вызвать нужную функцию...

TX_EEPROM(); // запись EEPROM
RX_EEPROM(); // чтение EEPROM

:tea:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср сен 24, 2025 22:27:44
Alex_ka
Спасибо. Завтра попробую. Примет ли такие команды CodeVision?