Перейти к содержанию

Задержки В Codevision Avr


Desert _Eagl.5

Рекомендуемые сообщения

здраствуйте

имеется вот такой код(исходник не весь...)

#include <inttypes.h>
// Define number of counts per time period using _delay_loop_2
#define MS_COUNT2 F_CPU / 4000
#define US10_COUNT2 F_CPU / 400000
#define US_COUNT2 F_CPU / 4000000
static inline void delay_us(uint8_t __us) __attribute__((always_inline));
static inline void delay_10us(uint8_t __us10) __attribute__((always_inline));
static inline void delay_ms(uint8_t __ms) __attribute__((always_inline));
static inline void delay_s(uint8_t __ms) __attribute__((always_inline));


void delay_us(uint8_t __us){
_delay_loop_2(US_COUNT2 * __us);
}

void delay_10us(uint8_t __us10)
{
_delay_loop_2(US10_COUNT2 * __us10);
}

void delay_ms(uint8_t __ms)
{
uint8_t __ticks;
for(__ticks=0;__ticks<__ms;__ticks++)
{
_delay_loop_2(MS_COUNT2);
}
}

void delay_s(uint8_t __s)
{
uint8_t __ticks;
for(__ticks=0; __ticks<__s; __ticks++)
{
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
}
}

при компиляции возникает ошибка в блоке, пишет что отсутствуют скобки {. Так вот нопонятно где они должны стоять там?

static inline void delay_us(uint8_t __us) __attribute__((always_inline));
static inline void delay_10us(uint8_t __us10) __attribute__((always_inline));
static inline void delay_ms(uint8_t __ms) __attribute__((always_inline));
static inline void delay_s(uint8_t __ms) __attribute__((always_inline));

Спасибо!

Изменено пользователем Desert _Eagl.5
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

лог компиляции, всего одна ошибка...

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC_MINOR__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(228), included from: YYU.c: undefined symbol '__AVR_MEGA__', assumed zero

Warning: C:\Users\v\Desktop\klk\YYU.c(67): unknown #pragma directive

Warning: C:\Users\v\Desktop\klk\YYU.c(68): unknown #pragma directive

Warning: D:\rhy\FLOWC\CAL\AVR\AVR_CAL_TypeDefs.c(48), included from: internals.c: the 'double' data type will be supported only in the 'Professional' version, defaulting to 'float'

Error: D:\rhy\FLOWC\CAL\AVR\AVR_CAL_Delay.c(43), included from: internals.c: missing '{'

кста нашол нечто похожее и там нету скобок

В файле Winavr/avr/include/utils/delay.h есть четыре функции задержки
Код:
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
static inline void _delay_us(double __us) __attribute__((always_inline));
static inline void _delay_ms(double __ms) __attribute__((always_inline));

Изменено пользователем Desert _Eagl.5
Ссылка на комментарий
Поделиться на другие сайты

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

43 строка это как раз

static inline void delay_us(uint8_t __us) __attribute__((always_inline));

вот сишник AVR_CAL_Delay.rar

#include <inttypes.h>
// Define number of counts per time period using _delay_loop_2
#define MS_COUNT2 F_CPU / 4000
#define US10_COUNT2 F_CPU / 400000
#define US_COUNT2 F_CPU / 4000000
static inline void delay_us(uint8_t __us) __attribute__((always_inline));
static inline void delay_10us(uint8_t __us10) __attribute__((always_inline));
static inline void delay_ms(uint8_t __ms) __attribute__((always_inline));
static inline void delay_s(uint8_t __ms) __attribute__((always_inline));


void delay_us(uint8_t __us){
_delay_loop_2(US_COUNT2 * __us);
}

void delay_10us(uint8_t __us10)
{
_delay_loop_2(US10_COUNT2 * __us10);
}

void delay_ms(uint8_t __ms)
{
uint8_t __ticks;
for(__ticks=0;__ticks<__ms;__ticks++)
{
_delay_loop_2(MS_COUNT2);
}
}

void delay_s(uint8_t __s)
{
uint8_t __ticks;
for(__ticks=0; __ticks<__s; __ticks++)
{
delay_ms(250);
delay_ms(250);
delay_ms(250);
delay_ms(250);
}
}

#define nop() asm("NOP")
//Original Byte Delays
void Wdt_Delay_S(char delay);
void Wdt_Delay_Ms(char delay);
//New Int Delays
void FCI_DELAYINT_US(MX_UINT16 Delay);
void FCI_DELAYINT_MS(MX_UINT16 Delay);
void FCI_DELAYINTWDT_MS(MX_UINT16 Delay);
void FCI_DELAYINT_S(MX_UINT16 Delay);
void FCI_DELAYINTWDT_S(MX_UINT16 Delay);
void Wdt_Delay_S(char delay)
{
char i;
short j;
for (i=0; i<delay; i++)
{
 for (j=0; j<999; j++)
 {
	 Wdt_Delay_Ms(1);
 }
}
}
void Wdt_Delay_Ms(char delay)
{
char i;
for (i=0; i<delay; i++)
{
 MX_CLEAR_WATCHDOG;	 //Clear Watchdog Timer
 delay_ms(1);
}
}
void FCI_DELAYINT_US(MX_UINT16 Delay)
{
while (Delay > 255)
{
delay_us(255);
Delay = Delay - 255;
}
if (Delay > 0)
delay_us(Delay & 0xFF);
}
void FCI_DELAYINT_MS(MX_UINT16 Delay)
{
while (Delay > 255)
{
delay_ms(255);
Delay = Delay - 255;
}
if (Delay > 0)
delay_ms(Delay & 0xFF);
}
void FCI_DELAYINTWDT_MS(MX_UINT16 Delay)
{
while (Delay > 255)
{
Wdt_Delay_Ms(255);
Delay = Delay - 255;
}
if (Delay > 0)
Wdt_Delay_Ms(Delay & 0xFF);
}
void FCI_DELAYINT_S(MX_UINT16 Delay)
{
while (Delay > 255)
{
delay_s(255);
Delay = Delay - 255;
}
if (Delay > 0)
delay_s(Delay & 0xFF);
}
void FCI_DELAYINTWDT_S(MX_UINT16 Delay)
{
while (Delay > 255)
{
Wdt_Delay_S(255);
Delay = Delay - 255;
}
if (Delay > 0)
Wdt_Delay_S(Delay & 0xFF);
}

Изменено пользователем Desert _Eagl.5
Ссылка на комментарий
Поделиться на другие сайты

эхх все попрежнему, какаято странная ошибка. Когда подключаю файл delay.h

Error: D:\rhy\FLOWC\CAL\AVR\AVR_CAL_Delay.c(7), included from: internals.c: function doesn't match it's previous declaration from file: 'D:\codevision avr\inc\delay.h', line: 9

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC_MINOR__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(113), included from: YYU.c: undefined symbol '__GNUC__', assumed zero

Warning: C:\Users\v\Desktop\klk\interrupt.h(228), included from: YYU.c: undefined symbol '__AVR_MEGA__', assumed zero

Warning: C:\Users\v\Desktop\klk\YYU.c(67): unknown #pragma directive

Warning: C:\Users\v\Desktop\klk\YYU.c(68): unknown #pragma directive

Warning: D:\rhy\FLOWC\CAL\AVR\AVR_CAL_Delay.c(7), included from: internals.c: external/internal linkage conflict with previous declaration

строка 7 отмечена

#include <inttypes.h>
// Define number of counts per time period using _delay_loop_2
#define MS_COUNT2 F_CPU / 4000
#define US10_COUNT2 F_CPU / 400000
#define US_COUNT2 F_CPU / 4000000

7) static inline void delay_us(uint8_t __us) __attribute__((always_inline));
static inline void delay_10us(uint8_t __us10) __attribute__((always_inline));
static inline void delay_ms(uint8_t __ms) __attribute__((always_inline));
static inline void delay_s(uint8_t __ms) __attribute__((always_inline));

Изменено пользователем Desert _Eagl.5
Ссылка на комментарий
Поделиться на другие сайты

В CodeVisionAvr синтаксис языка немного отличается от AVR Studio!

Пробуй работать с AVR Studio а не с CodeVisionAvr.

CVAVR практически пол кода генерирует (2мя) нажатиями кнопок и по этому ты не вникаешь как и что прописывать (руками)

Просто потом будет сложнее перейти на AVR Studio.

P.S. У меня в AVR Studio твой код откампилировался без проблемм!!!

Изменено пользователем Кирилл84

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

эхх все попрежнему, какаято странная ошибка. Когда подключаю файл delay.h

Что тут странного? Вы используете зарезервированное слово delay_us, которое объявлено в delay.h

Переименуйте ваш delay_us в нп. moj_delay_us

Ссылка на комментарий
Поделиться на другие сайты

нету __attribute__ в CodeVision это ключевое слово чисто для GCC компилятора (AVRStudio)

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...