вы про язык ?
по поводу ++. с++ это расширение си. с++ в полном обьеме поддерживает си но не наоборот.
флаг I выставлять хоть надо вручную или это тоже сделает компилятор ?
СЦБист писал(а):какая к черту ява ?
Сделает компилятор, но только тогда, когда Вы укажите сделать это ему. В данном случае было бы очень плохо, если бы он сам разрешал или запрещал их.СЦБист писал(а):флаг I выставлять хоть надо вручную или это тоже сделает компилятор ?
Z_h_e писал(а):[qСделает компилятор, но только тогда, когда Вы укажите сделать это ему. В данном случае было бы очень плохо, если бы он сам разрешал или запрещал их.
А говорите что программировали на асме. В обработчике прерывания флаг I сбрасывается аппаратно, независимо от кода. Чтобы запретить прерывания вручную используются ассемблерные вставки или, что лучше, функции, написанные разработчиками компилятора. Для avr-gcc это cli(), sei(), объявленные в <avr/interrupts.h>когда я напишу функцию обработчика прерываний этот флаг установится ?
так а если мне надо запретить прерывания при записи в eeprom к примеру
Функция записи в еепром из стандартной библиотеки сама это делает.СЦБист писал(а):так а если мне надо запретить прерывания при записи в eeprom к примеру
COKPOWEHEU писал(а):Где-то читал что С++ создавался как ООП-расширение Си,
си это процедурная технология.Z_h_e писал(а):Язык Си хоть и верхнего уровня. Но не своевольничает и близок к камню. В том числе по этому широко распространился.
В Си нет такого понятия, хотя это несущественно. Но тему эту уже обсуждали в другом топике.си это процедурная технология.
Зачем Вы спрашиваете одно и тоже, если Вам уже ответили?в си ее надо самому активировать с помощью вставки ?
Потому что кто-то не правильно понял аббревиатуру ЯВУ.Z_h_e писал(а):Не знаю зачем Вы тут про Яву заговорили
Поискать у себя на компе, потом в инете... Какой ответ ожидали?СЦБист писал(а):где этот файл откопать ?
Код: Выделить всё
#include <avr/interrupt.h>Поскольку он оперирует не машинными инструкциями, а командами языка, не своевольничать он не может: способ перевода одного в другое далеко не один. Другое дело, что обычно можно предсказать во что именно компилятор развернет то или иное выражение.Язык Си хоть и верхнего уровня. Но не своевольничает и близок к камню. В том числе по этому широко распространился.
Ну, справедливости ради, в отличие от обычных процедур, сохраняется SREG и РОН.Наличие функции обработчика прерывания - это всего-лишь функция на которую ссылается вектор прерывания.
Отыскать наконец документацию по avr-libc и почитать какие есть заголовочные файлы и какие в них функции описаны. Да, и использование malloc в контроллерах - плохая идея.где этот файл откопать ?
А экскаватор это расширение солдата желдорбата с лопатой. То, что кормит плюсы в основной области их применения - в сюхе отсутствует. Ембеддед, кмк, не является этой областью. Хотя шаблоны иногда там весьма к месту.СЦБист писал(а):с++ это расширение си. с++ в полном обьеме поддерживает си но не наоборот.
Z_h_e писал(а):СЦ, Вы же давно тут.]
Код: Выделить всё
void sei()
{
asm("sei");
}
void cli()
{
asm("cli");
}Если я вам начну что-то утверждать, к примеру, про ДЦ - вот это будут догадки с моей стороны. Извольте взаимно не учить тех, кто работой на плюсах занимается профессионально не один десяток лет и в курсе "высокоуровневых ЯП" несколько больше чем только решившие "переходить от асма к си".СЦБист писал(а):Одни догадки по поводу высокоуровневых ЯП.
Я бы перефразировал, что надо понимать, что происходит за кулисами и какие накладные расходы за это платятся. И может ли используемый контроллер эти расходы потянуть. Объекты - это инкапсуляция и защита, если проект большой и потенциально расширяемый в будущем, причём поддерживаться будет явно менее квалифицированными персонажами - то заложить разумную структуру данных и их методов с самого начала будет разумным решением. Тут на накладные расходы в виде неявного параметра в каждый метод можно закрыть глаза. Полиморфизм? Ну это сразу за кулисами появляется VTM и рантайм производительность проседает при частом их использовании - а оно нам надо? А наша задача настолько вариативна, что появятся объекты с меняющимся поведением? Мне пока такие примеры, именно в области встраиваемых систем, на память не идут. Шаблоны - это конечно, смачный хруст пожираемого за кулисами code сегмента. Но - по крайней мере одно применение я им нашёл - NXP-шный камень с тремя I2C каналами - на каждом сидит от одного до четырёх периферийных устройств, на каждом канале есть устройство, мечтающее на канале помультимастерить. Решение в лоб - каждый канал - отдельный модуль в котором своя стейт-машинка и специфичные методы по работе с конкретной периферией. Количество оперируемых регистров, дайбохпамяти, семь штук. И каждый раз, когда находится ошибка в стейт-машинке - надо править и проверять все три модуля. Да и вообще, честный кодер, при подобной дубликации функционала спать спокойно и глубоко априори не сможет. И вот в одном из посещаюших его в таком состоянии кошмаров невидимая рука пишет на стене:COKPOWEHEU писал(а):Объекты и даже наследование тоже могут оказаться удобными. Надо только помнить, что динамическое выделение памяти а, тем более, использование наследования в таких объектах, для контроллеров крайне нежелательно.
Код: Выделить всё
template<uint32_t __baseAddress, size_t __bufferSize>
class I2CDriver {
#define __CONSET (*(volatile unsigned long *)(__baseAddress + 0x00))
#define __STAT (*(volatile unsigned long *)(__baseAddress + 0x04))
#define __DAT (*(volatile unsigned long *)(__baseAddress + 0x08))
#define __ADR (*(volatile unsigned long *)(__baseAddress + 0x0C))
#define __SCLH (*(volatile unsigned long *)(__baseAddress + 0x10))
#define __SCLL (*(volatile unsigned long *)(__baseAddress + 0x14))
#define __CONCLR (*(volatile unsigned long *)(__baseAddress + 0x18))
[...]
Siarzhuk писал(а):[qu
Если я вам начну что-то утверждать,:)
вообще-то если вы не удосужились изучить инструмент, которым решили пользоваться, некорректно утверждать, что в нем чего-то не хватает или кто-то вам чего-то недосказал.СЦБист писал(а):Решил создать свои функции в файле...
так как той хрени в вин авр нету.... ибо знатоки опять чего то не договаривают
размещение функций в заголовочном файле - это, мягко говоря, очень нехорошая практика программирования...СЦБист писал(а):не первый год в ++ и малость ориентируюсь в нем
С++ это язык, являющийся дальнейшим развитием Си. это не расширение языка Cи.СЦБист писал(а):С++ это расширение Си не более того.
Компилятор АУДрино использует именно классы.
следовательно там чистый ++.