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

Обсуждаем контроллеры компании Atmel.
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

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

Сообщение AVK »

[uquote="veso74",url="/forum/viewtopic.php?p=4623277#p4623277"]How to copy a char array in C?[/uquote]
Да причем тут это? Как копировать массив я знаю, вот же функцию привел. Проблема в то что если массив источник во флеше она не компилируется.
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

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

Сообщение veso74 »

Дайте весь фрагмент кода.
Последний раз редактировалось veso74 Сб сен 07, 2024 19:04:38, всего редактировалось 1 раз.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Как описан массив во флэш? Ведь не просто char srr[]=’ 123’; а как-то иначе.
Как описан указатель функции, использующей эти строки? Совпадает ли его тип с типом массива?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

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

Сообщение AVK »

flash char q[]="stndtestwaitload hotPreHheadbodytail manRhotSelfRheadeltrect SsTNBKsNBKw endstopflowSPANNODSFREQTAD-PowHPowLDS0EDS1ECOLDNLOAnoPSscPC";
вот именно он, функцию копирования я привел, все типа разумеется соответствуют
если убрать модификатор flash все работает, но теряется весь смысл данной конструкции.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Функция, что вы привели, работает (ожидает на входе) указатель другого типа - на ОЗУ, а у вас надо на ФЛЭШ
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

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

Сообщение AVK »

Я таки это понимаю, как можно изменить что бы заработало?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Сравните типы указателя в параметре функции и массива. Указатель должен иметь тот же тип, что и массив. Т.е. до звездочки должно быть точно то же, что и до имени массива.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

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

Сообщение AVK »

В CV есть вообще указатели на флеш?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Если есть flash char, почему бы не быть flash char*?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

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

Сообщение 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];
}
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

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

Сообщение Serzh2000 »

где скачать библиотеку TM1637 для CodeVisionAVR
НИКАК НЕ МОГУ ПОДКЛЮЧИТЬ ДИСПЛЕЙ TM1637 к атмеге 8
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Serzh2000 писал(а):скачать библиотеку TM1637
Там же управление обычным I2C. Какая библиотека для этого нужна ? :roll:
Аватара пользователя
>TEHb<
Друг Кота
Сообщения: 5723
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж
Контактная информация:

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

Сообщение >TEHb< »

Не совсем. Там всё довольно через зад относительно нормального I2C. Но выкрутиться можно.
"Привет!" - соврал он.
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1614
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

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

Сообщение VNS »

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

Ну и в даташите всё о работе ТМ1637 подробно расписано (с примерами)…
TM1637.pdf
(712.75 КБ) 85 скачиваний
Аватара пользователя
kotneko
Открыл глаза
Сообщения: 47
Зарегистрирован: Ср дек 10, 2008 15:57:16

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

Сообщение kotneko »

Добрый вечер ! Помогите,пожалуйста, с компиляцией и получения hex файла из этого исходника
https://radiokot.ru/forum/viewtopic.php ... 84#p791584
Вложения
rc5_1.c
(8.11 КБ) 113 скачиваний
Jon_Smeet
Родился
Сообщения: 1
Зарегистрирован: Пн сен 08, 2025 10:32:47

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

Сообщение Jon_Smeet »

Вот здесь нашел пример придачи и опрос codevision i2c pcf8574. оба примера работают. смог понять как работать с периферией типа i2c pcf8574 без библиотек.
codenamehawk
Вымогатель припоя
Сообщения: 527
Зарегистрирован: Вт фев 09, 2010 17:52:26

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

Сообщение codenamehawk »

kotneko писал(а):Помогите,пожалуйста, с компиляцией и получения hex файла из этого исходника
Этого недостаточно для получения рабочей прошивки.
Нужны все файлы проекта, в которых учитывается примненный процессор и код программы для него.
Создайте в CodeWizardAVR V1.25.9 новый проект для ATtiny2313, установите частоту проца 8,000000 MHz
В настройках подключите lcd модуль.
Скомпилируйте полученный проект.
Потом замените код на код из rc5_1.c, скомпилируйте и получите нех файл.
Alex_ka
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср сен 04, 2019 17:59:23
Откуда: Гомель

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

Сообщение 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; }
}
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение 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:
Alex_ka
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Ср сен 04, 2019 17:59:23
Откуда: Гомель

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

Сообщение Alex_ka »

Спасибо. Завтра попробую. Примет ли такие команды CodeVision?
Ответить

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