Например TDA7294

Форум РадиоКот • Просмотр темы - #define F_CPU _delay_us(); _delay_ms();
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 01:21:40

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 94 ]    , , 3, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Вт ноя 21, 2017 19:50:19 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
-D просто добавляется:
CFLAGS += $(addprefix -D,$(DEFS))
можно и сразу -DF_CPU=16000000
древняя make сейчас не единственная система сборки: cmake, qbs, scons (на питоне) используют для микроконтроллеров.
хорошая иде Clion использует cmake, там так примерно:
SET(FREQ "8000000")
SET(CMAKE_C_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -std=gnu99 -Wl,--gc-sections")
в QtCreator qbs:
cpp.commonCompilerFlags: [
"-mmcu=MCU",
"-fdata-sections","-ffunction-sections",
"-Wl,-gc-sections",
"-Os",
"-std=gnu99","-Wall",
"-D F_CPU=8000000UL"
];
а вот в аврстудии 4.19 в настройках проекта просто пишется число 8000000 (ноль лишний тоже легко приписать) UL почему то не надо, потом оно каким то чудодейственным образом в последней вкладке само добавляется -DF_CPU=8000000UL где можно тоже такое добавить или отредактировать имеющееся - вызывает до сих пор дисонанс
по мне лучше всеж в хидере задефайнить


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 22, 2017 12:29:41 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
oleg110592 при нормальном все гораздо проще что бы лишний раз не своминать отцёв основателей и сколько куда воды утекло многие ленятся ставить семёрку вмесото четвёрки

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 22, 2017 21:51:29 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс дек 13, 2009 01:04:42
Сообщений: 123
Рейтинг сообщения: 0
Я не ожидал что вопрос вызовет такой ажиотаж. За F_CPU спрашивалось в контексте как "она" влияет на библиотеки задержки. Отладка программы становиться муторным делом... Как изменить частоту в окне "процессор", там всегда стоит 1000000? Вне зависимости от F_CPU.

_________________
Голосовой чат.


Последний раз редактировалось goodspeedmen Ср ноя 22, 2017 23:14:05, всего редактировалось 1 раз.

Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 22, 2017 22:35:23 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
goodspeedmen писал(а):
Как изменить частоту в окне "процессор", там всегда стоит 1000000? Вне зависимости от F_CPU
в настройках проекта, там же, где и тип микроконтроллера выбираете. ну или поблизости.

А что F_CPU внутри файла никак не влияет на режим симулятора студии, все заумствующие здесь и не подумали. а я говорил - не надо F_CPU внутри файлов делать... а вот та частота, что "в окне" студии, должна и в F_CPU попадать автоматически.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Чт ноя 23, 2017 06:33:48 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 1
Как изменить частоту в окне "процессор", там всегда стоит 1000000? Вне зависимости от F_CPU.
Debug->AVR Simulator Options.

Влияет только на поле Stop Watch в том же окне "Процессор", следующая строчка за Frequency. Показывает, сколько микросекунд симулированного времени заняли эти <Cycle Counter> циклов симулируемого процессора. Активно, вестимо, только в симуляции.

Добавлено after 14 minutes 54 seconds:
ARV писал(а):
а вот та частота, что "в окне" студии, должна и в F_CPU попадать автоматически.
Угу, попадает. И, если ее напишешь где-то еще и в текстах, получишь ворнинг. Но, увы, эта частота из Project Options никоим образом не попадает в AVR Simulator Options, приходится ручками. Косячок, однако, в Студии, по крайней мере в 4.19...

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Чт ноя 23, 2017 10:23:47 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 1
Цитата:
Отладка программы становиться муторным делом...

вот в чем вопрос - тут или терпеть или задержки закомментировать или железный отладчик. У меня 200ms секунды три "симулирует", наверняка зависит от конфигурации ПК
Изображение
F_CPU действительно симулятору до лампочки, приходится ручонками


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Чт ноя 23, 2017 17:25:53 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
ssd жёсткий чуток помогает, а так да. от всех железок зависит

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Пт ноя 24, 2017 13:34:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
а я вот никогда вообще ни в одном заголовочнике его не прописываю - вообще проблем нет!
у вас есть, пусть даже гипотетически, возможность где-то среди файлов проекта забыть добавить main.h и поиметь гемору... у меня такой возможности даже в теории нет.

Если забуду и попытаюсь использовать - ошибка. Если попытаюсь переопределить - будет варнинг. Если будет переопределение там где не включил, то тогда да. Но это невозможно, т-к main.h у меня включается в абсолютно ВСЕ файлы, даже из аппнотов.
По поводу симулирования. Значит игрался я один раз с генератором звука - кнопочки на входе, меандр на выходе. Получалось что если поставил тактовую МК 8МГц, то были обрывы в звучании. А на 1МГц уже никакого рипения. Проц на ноуте i5. Модель не помню.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Сб ноя 25, 2017 22:06:21 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Сб янв 14, 2012 22:53:50
Сообщений: 225
Рейтинг сообщения: 0
если в первой строке программы написано include conf.h то первая его строка и будет первой строкой всей программы, если в conf.h первой строкой идёт F_CPU то его видят вообще все подключенные инклюды

Совершенно верно, но некоторым объяснять бесполезно, K&R они не читали и про ISO не знают, т.к. считают себя слишком умными для такого.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Вт ноя 28, 2017 16:33:53 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс дек 13, 2009 01:04:42
Сообщений: 123
Рейтинг сообщения: 0
Код:
#include <stdio.h>
#include <avr/io.h>
#include <stdbool.h>


void delay(uint32_t, bool); // прототип функции. _mls _ms

int main(void)
           {
            DDRB =  0b00000011;
            PORTB = 0b00000000;
            while(1)
                   {
                    PORTB |= (1<<1);
                    delay(10, 0); // 1 ms.
                    PORTB &= ~(1<<1);
                    PORTB |= (1<<0);
                    delay(1000, 1); // 1 cek.
                    PORTB &= ~(1<<0);
                    delay(1000, 1);
                   }

           }

/*

16000000 / 8 =   2000000;   1 / 2000000 = 0,0000005 = 5 чего то там.

16000000 / 64 =   250000;   1 / 250000 = 0,000004 = 4 миллисекунды.

16000000 / 1024 = 15625;   1 / 15625  = 0,000064  = 0,64 микросекунды.

*/
void delay(uint32_t Time_delay, bool _type)
              {
      uint16_t cycle = 0x00;
                uint32_t Tick_Times = 0x00;
           if(_type == 0)
        {
               TCCR0B = 0b00000011;              // Пуск таймера_0 с предделителем на 8.
               Tick_Times = Time_delay * 2;     // ;                                 
             }   
               else
       {
                   uint8_t temp_t = 0x00;
                   Time_delay *= 0x10;                   // Time_delay * 16 ~ 0,00096);
              cycle = (Time_delay / 250);         // количество циклов for;
              temp_t = (Time_delay % 250);
              Tick_Times = temp_t;
              TCCR0B = 0b00000101;               // Пуск таймера_0 с предделителем на 1024.
        }                 
                start_cycle:;
           while(TCNT0 < Tick_Times)             //Покуда счетчик насчитал меньше чем наш аргумент...
             {
                        }
                   if(cycle != 0)
          {
                 cycle--;
                           Tick_Times = 250;   
                 TCNT0 = 0;
            goto start_cycle;         
           }   
             TCCR0B = 0;
        TCNT0 = 0;                                       //Stop timer_0
           }


Изображение

/*Тут нацарапал функцию задержки, расчёты с предделением на 16 не сработали :-( но на 8 получилось почти точно */

_________________
Голосовой чат.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Вт ноя 28, 2017 17:14:31 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
если в первой строке программы написано include conf.h то первая его строка и будет первой строкой всей программы, если в conf.h первой строкой идёт F_CPU то его видят вообще все подключенные инклюды

Совершенно верно, но некоторым объяснять бесполезно, K&R они не читали и про ISO не знают, т.к. считают себя слишком умными для такого.


Не, не работает эта шняга, ерунду говорите. Сделал вот в первом хидере дефайн, в левом файле делаю переопределение - 0 варнингов. Делаю инклюд хидера - опа! Варнинг. Дефайны у нас прописываются через команды препроцессора, их обрабатывает препроцессор. Потом у нас идет компиляция и на этом этапе никаких дефайнов уже нет - чисто константы или подставленные куски кода. В конце у нас работает линковщик - он сшивает куски скомпиленого кода. Так вот - константа или дефайн одного файла абсолютно не виден другим файлам, без инклюда либо объявления.
Подстановка, компиляция файлов, сшивание скомпиленых кусков. Именно так это работает. Заместо обвинять кого-то в некомпетентности могли бы сначала протестить то что написали.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Вт ноя 28, 2017 22:34:02 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
Ярослав555 видимо вы что то сделали не так, у меня прекрасно работает.

Вы пишите "Сделал вот в первом хидере дефайн, в левом файле делаю переопределение - 0 варнингов."

Где я вам говорил что нужно сделать переопределение? Во первых включите все варнинги и после компиляции они появятся, или поставьте не такие старые компилятор и ИДЕ.

"Так вот - константа или дефайн одного файла абсолютно не виден другим файлам, без инклюда либо объявления." - чуш, просто бред, или вы вязните в старом по которое не может или сами что то путаете. Ещё скажите что у вас не работают лямбда функции и констэкспр.

Мне не нужно это теститить по тому что все проекты у меня начинаются в F_CPU в первой строке файла conf.h который инклюдится в сишный компилируемый главный файл, первой строкой, и другие дефайны прекрасно видны.

Какая версия плюсов у вас? Какая версия ИДЕ?


ПРИМЕР

#include "conf.h"
int main(void)
{
while(1)
{
#include "test.h"
}
}

conf.h:
#define simulate false
#define atmega32
#define F_CPU 16000000UL

#define TestDef 6

#include <avr\io.h>
#include <util\delay.h>
#include <avr\eeprom.h>
#include <avr\pgmspace.h>
#include <avr\interrupt.h>

test.h:
PORTA = TestDef;

ДИЗАССЕМБЛЕР:

00000000 RJMP PC+0x002A Relative jump
00000001 NOP No operation
00000002 RJMP PC+0x0030 Relative jump
00000003 NOP No operation
00000004 RJMP PC+0x002E Relative jump
00000005 NOP No operation
00000006 RJMP PC+0x002C Relative jump
00000007 NOP No operation
00000008 RJMP PC+0x002A Relative jump
00000009 NOP No operation
0000000A RJMP PC+0x0028 Relative jump
0000000B NOP No operation
0000000C RJMP PC+0x0026 Relative jump
0000000D NOP No operation
0000000E RJMP PC+0x0024 Relative jump
0000000F NOP No operation
00000010 RJMP PC+0x0022 Relative jump
00000011 NOP No operation
00000012 RJMP PC+0x0020 Relative jump
00000013 NOP No operation
00000014 RJMP PC+0x001E Relative jump
00000015 NOP No operation
00000016 RJMP PC+0x001C Relative jump
00000017 NOP No operation
00000018 RJMP PC+0x001A Relative jump
00000019 NOP No operation
0000001A RJMP PC+0x0018 Relative jump
0000001B NOP No operation
0000001C RJMP PC+0x0016 Relative jump
0000001D NOP No operation
0000001E RJMP PC+0x0014 Relative jump
0000001F NOP No operation
00000020 RJMP PC+0x0012 Relative jump
00000021 NOP No operation
00000022 RJMP PC+0x0010 Relative jump
00000023 NOP No operation
00000024 RJMP PC+0x000E Relative jump
00000025 NOP No operation
00000026 RJMP PC+0x000C Relative jump
00000027 NOP No operation
00000028 RJMP PC+0x000A Relative jump
00000029 NOP No operation
0000002A CLR R1 Clear Register
0000002B OUT 0x3F,R1 Out to I/O location
0000002C LDI R28,0x5F Load immediate
0000002D LDI R29,0x08 Load immediate
0000002E OUT 0x3E,R29 Out to I/O location
0000002F OUT 0x3D,R28 Out to I/O location
00000030 RCALL PC+0x0003 Relative call subroutine
00000031 RJMP PC+0x0005 Relative jump
00000032 RJMP PC-0x0032 Relative jump
--- D:\WORK\Paper\DefTest\DT\GccApplication14\Debug/.././test.h ----------
PORTA = TestDef;
00000033 LDI R24,0x06 Load immediate
--- No source file ----------
00000034 OUT 0x1B,R24 Out to I/O location
00000035 RJMP PC-0x0001 Relative jump
00000036 CLI Global Interrupt Disable
00000037 RJMP PC-0x0000 Relative jump


ОСОБО ИНЕТЕРЕСУЮЩИЙ УЧАСТОК:
PORTA = TestDef;
00000033 LDI R24,0x06 Load immediate
00000034 OUT 0x1B,R24 Out to I/O location
00000035 RJMP PC-0x0001 Relative jump
00000036 CLI Global Interrupt Disable
00000037 RJMP PC-0x0000 Relative jump

порт выдаёт 6.

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 09:27:39 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
то что нет варнинга, как раз означает что определение не видно. Я делал и по другому - определял дефайн в хидере мейна (первого файла), и пробовал присвоить переменной значение через этот дефайн в другом файле - если нет инклюда получаем ошибку.
По поводу того кода что Вы наваяли - так там совсем другое:
while(1)
{
#include "test.h"
}
означает что Вы в файл main.c ВСТАВИЛИ содержимое из test.h. А я говорю что инклюд подключенный в main.c СОВЕРШЕННО не видер в test.C (не h), без инклюда. ВИДНО и сделать ПОДСТАНОВКУ это СОВСЕМ разные вещи. Разберитесь как работает препроцессор. Когда вы делаете инклюд, это означает что на место инклюда ПРЕПРОЦЕССОР вставляет код из ВКЛЮЧАЕМОГО файла. И вот этот уже преобразованный ФАЙЛ видит компилятор. Ваш код это суть ОДИН файл после прохода препроцессора, поэтому компилятор все видит и не ругается. А вот когда будете собирать проект из тучи СИШНЫХ файлов, вот тогда познаете что такое препроцессор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 14:09:08 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
"то что нет варнинга, как раз означает что определение не видно" - в моём примере TestDef виден, вы бы привели лучше короткий пример того что и как у вас не работает, в какой ситуации СОВЕРШЕННО не видит

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 15:42:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
"то что нет варнинга, как раз означает что определение не видно" - в моём примере TestDef виден, вы бы привели лучше короткий пример того что и как у вас не работает, в какой ситуации СОВЕРШЕННО не видит

О Божечки! Он у Вас НЕ виден! Он у Вас ПОДСТАВЛЕН в мейн.с После прохода препроцессора заместо строчки #include "test.h" компилятор видит PORTA = TestDef;
Такс, простенький пример говорите.
Ну ок.

main.h:
#ifndef MAIN_H
#define MAIN_H
#define CONST 4
#endif

main.c:
#include "main.h"

void main (void)
{
char i = CONST; //работает, потому что вначале файла main.c вставлен текст из main.h
}

test.c (файл в том же проекте):

void somFunction (void)
{
char j = CONST; //ошибка, CONST не определено, потому как ничего не заинклюжено
}

P.S. У меня всё работает, я знаю как сделать так чтобы оно работало.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 17:31:45 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
вы просто забываете вставить нужный инклуд, вставьте include test и всё заработает.

видимо делаете какието фокусы с extern? но зачем, инклюд есть, зачем что то выдумывать

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 18:01:50 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
вы просто забываете вставить нужный инклуд, вставьте include test и всё заработает.

видимо делаете какието фокусы с extern? но зачем, инклюд есть, зачем что то выдумывать

Дак о том и речь шла с самого начала! Что инклюды разные, может случиться переопределение F_CPU. Вы заявили что определенное в первом инклюде видно ВЕЗДЕ, назвали человека не компетентным и послали читать Карнигана-Риччи.
И я ничего не забываю. У меня НЕТ проблемы. У меня проекты с десятками файлов и хреновой тучей инклюженых файлов. Меня учить не надо. extern не нужен? Что-то новенькое! :))) А нука создай в хидере переменную и попробуй включить хидер в два файла. Что? Получилось? Или получил variable already defined during compilation? Да ты просто гуру, я посмотрю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 18:11:10 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 18, 2012 14:50:22
Сообщений: 382
Рейтинг сообщения: 0
Дак о том и речь шла с самого начала! Вы назвали человека не компетентным и послали Карнигана-Риччи.

ничего подобного! я его не читал.

описанных вами не со стыковок у меня нет вообще, но есть подозрение что вы как то странно компилируете кусками, так ли?

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

_________________
я его в гугл на дрц прогнал, вы знаете, пи-када нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 19:21:05 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
mazda писал(а):
но есть подозрение что вы как то странно компилируете кусками, так ли?
что значит "кусками"? в Си каждый сишный файл компилируется отдельно и независимо от остальных. в продвинутых системах из всего множества файлов перекомпилируются при сборке только те, которые имеют дату свежее, чем соответствующий объектный файл из предыдущей сборки.

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

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: #define F_CPU _delay_us(); _delay_ms();
СообщениеДобавлено: Ср ноя 29, 2017 19:34:22 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
Дак о том и речь шла с самого начала! Вы назвали человека не компетентным и послали Карнигана-Риччи.

ничего подобного! я его не читал.

описанных вами не со стыковок у меня нет вообще, но есть подозрение что вы как то странно компилируете кусками, так ли?

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

:facepalm: я уже писал не раз как работает СБОРКА проекта. Будь то gcc, код вижн или мой IAR.
Сначала запускается ПРЕПРОЦЕССОР - это так называется программка. Препроцессор берет каждый C-файл, смотрит свои директивы - начинаются с символа # и исполняет их. Потом КОМПИЛЯТОР - другая программка компилирует каждый С файл ОТДЕЛЬНО. Потом ЛИНКОВЩИК сшивает ваш проект воедино. О чем с вами можно говорить когда вы не знаете что такое мультифайловый проект? У вас судя по всему только main.c с кучей хидеров. НЕЛЬЗЯ обойтись без extern - НЕТУ другого способа расширить область видимости файла. Сколько областей видимости вы знаете? Если попытаться обьявить переменную в хидере и попробовать включить его в несколько файлов - получите критическую ошибку попытки переопределить существующую переменную. ПОНЯТНО? Если нет - идите читать Карнигана-Ритчи.

Добавлено after 3 minutes 38 seconds:
и причем тут сишники? https://www.youtube.com/watch?v=suJhY0J ... XT&index=2 учитесь.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 94 ]    , , 3, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y