Страница 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. Какая библиотека для этого нужна ?

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 подробно расписано (с примерами)…
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; // читаем данные из регистра
удобней делать в виде отдельной функции...
//////////////////////////////////////////////////////////////////////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

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