Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
Serzh2000, атмега не "читает" ваши строчки. Их читает компилятор, который преобразует это дело в машинный код, который исполняет atmega.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
if(second!=lastSec){ // проверка начала новой секунды
lastSec=second; // в переменную сатрой секунды устанавливаем значение новой секунды
oldMillis = now; // в начале новой секунды сбрасываем в "0"
shag = 0; // в начале новой секунды сбрасываем в "0"
}большое спасибо ! нет ОГРОМНОЕ спасибо!!!
теперь все четко отрисовывается!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Гораздо красивей, имхо, был бы сдвиг циферек. Текущая выдвигается, следующая вдвигается. Например, сверху-вниз.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Вопросы по С/С++ (СИ)
я такие где то часы видел.
у меня три варианта шрифта и 8 режимов
может потом когда налюбуюсь этим режимом в другом шрифте и режиме сделаю сверху-вниз.
а пока у меня душа поет от этой отрисовки я долго над ней голову ломал, спасибо хорошему человеку
помог мне.
у меня три варианта шрифта и 8 режимов
может потом когда налюбуюсь этим режимом в другом шрифте и режиме сделаю сверху-вниз.
а пока у меня душа поет от этой отрисовки я долго над ней голову ломал, спасибо хорошему человеку
помог мне.
Re: Вопросы по С/С++ (СИ)
Подскажите, кто в курсе: есть некая структура данных
и доступ к этой структуре может осуществляться, как из основного кода, так и из прерываний. Не пойму, достаточно ли только саму структуру объявить, как volatile или этот модификатор надо указывать и для всех полей?
Код: Выделить всё
volatile struct {
int a;
int b;
char *buf;
// ... чего-то там еще
} var_name;
и доступ к этой структуре может осуществляться, как из основного кода, так и из прерываний. Не пойму, достаточно ли только саму структуру объявить, как volatile или этот модификатор надо указывать и для всех полей?
Re: Вопросы по С/С++ (СИ)
a5021, помечая структуру как volatile, вы делаете все её члены как volatile. Т.е. достаточно и так, если вам оно и нужно. Но учтите, что с указателями внутри так будет "засада" - т.о. будет только адрес помечен как volatile, но не данные по его адресу. Для того, чтобы пометить данные как volatile, надо указывать volatile char *buf; внутри.
Re: Вопросы по С/С++ (СИ)
Ну типа пытаюсь писать на "С" под AVR. Написал по инструкциям в тырнете мигалку, а транслятор выдает такое:
Результат трансляции работает как ожидалось. Тогда что это было? Чего-то пошло не так?
Код: Выделить всё
E:\Disk_D\comp\avr8-gnu-toolchain\bin>avr-gcc -mmcu=atmega48 -o blinker.a e:\bli
nker.c
In file included from e:\blinker.c:5:0:
e:\disk_d\comp\avr8-gnu-toolchain\avr\include\util\delay.h:95:3: warning: #warni
ng "Compiler optimizations disabled; functions from <util/delay.h> won't work as
designed" [-Wcpp]
# warning "Compiler optimizations disabled; functions from <util/delay.h> won't
work as designed"Результат трансляции работает как ожидалось. Тогда что это было? Чего-то пошло не так?
Re: Вопросы по С/С++ (СИ)
Shuspano, добавьте ключик оптимизации при компиляции -Os и всё будет ок.
Функции _delay требуют включенную оптимизацию компилятора, чтобы правильно время рассчитывать, о чем соб-но и написано в предупреждении.
Функции _delay требуют включенную оптимизацию компилятора, чтобы правильно время рассчитывать, о чем соб-но и написано в предупреждении.
-
radik91
- Открыл глаза
- Сообщения: 51
- Зарегистрирован: Сб янв 24, 2015 12:17:27
- Откуда: Чувашская Республика - Чувашия
Re: Вопросы по С/С++ (СИ)
Доброго вечера, есть плата и проект и старая программа-отладчик. Хотелось бы получать нужные дзначения для другой проги.. Проект TMS 2810
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
Можно ли как-то в Кейле компилятору сказать, чтобы отзеркаливал константные байты? Например, вместо 0xA8 получить в коде 0x15?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
[uquote="Gudd-Head",url="/forum/viewtopic.php?p=3815141#p3815141"]Например, вместо 0xA8 получить в коде 0x15?[/uquote]Можно макрос написать или constexpr функцию. На iar можно rbit использовать, а вот на gcc нет. Можно ли на keil не знаю. Так что, луше стандартными средствами языка.
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=3815154#p3815154"]На iar можно rbit использовать, а вот на gcc нет.[/uquote]
На всех можно. А еще можно в асм завернуть, если набор команд камня имеет этот самый rbit.
На всех можно. А еще можно в асм завернуть, если набор команд камня имеет этот самый rbit.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
[uquote="a5021",url="/forum/viewtopic.php?p=3815196#p3815196"]На всех можно.[/uquote]gcc не умеет rbit в компайлтайме выполнять.
[uquote="a5021",url="/forum/viewtopic.php?p=3815196#p3815196"]А еще можно в асм завернуть, если набор команд камня имеет этот самый rbit.[/uquote]Речь не о рантайме.
[uquote="a5021",url="/forum/viewtopic.php?p=3815196#p3815196"]А еще можно в асм завернуть, если набор команд камня имеет этот самый rbit.[/uquote]Речь не о рантайме.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
constexpr uint8_t rbit8(uint8_t x)
{
return (x & 0x01 ? 0x80 : 0) |
(x & 0x02 ? 0x40 : 0) |
(x & 0x04 ? 0x20 : 0) |
(x & 0x08 ? 0x10 : 0) |
(x & 0x10 ? 0x08 : 0) |
(x & 0x20 ? 0x04 : 0) |
(x & 0x40 ? 0x02 : 0) |
(x & 0x80 ? 0x01 : 0);
}
const uint8_t tmp = rbit8(0xA8);
int main()
{
GPIOA->IDR = tmp;
}Код: Выделить всё
//GPIOA->IDR = tmp;
LDR.N R1,??main_0 ;; 0x48000010
MOVS R0,#+21
STR R0,[R1, #+0]
Последний раз редактировалось VladislavS Пт мар 20, 2020 10:29:23, всего редактировалось 1 раз.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
насколько я понимаю, и макросом это можно задефайнить с тем же эффектом
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
[uquote="ARV",url="/forum/viewtopic.php?p=3815358#p3815358"]насколько я понимаю, и макросом это можно задефайнить с тем же эффектом[/uquote]
Почти 256 значений (за вычетом симметричных)?
Идея в том, чтобы писать в коде что-то осмысленное видаи потом выплёвывать в последовательный передатчик, но проблема в том, что выдавать надо старшим битом вперёд, а передатчик умеет только младшим.
Почти 256 значений (за вычетом симметричных)?
Идея в том, чтобы писать в коде что-то осмысленное вида
Код: Выделить всё
tmp = (3<<A)|(4<<B)|(5<<C)[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
Gudd-Head, Определись, тебе нужно константы этапа компиляции или на рантайме вычислять? Первое я написал как. Макросом будет точно так же, но хужее.
Если у тебя кортекс, судя по IDE Кеил, то у него есть команда RBIT. На рантайме всё очень просто будет
В принципе, Keil и IAR это и в компайлтайме могут вычислить.
Если у тебя кортекс, судя по IDE Кеил, то у него есть команда RBIT. На рантайме всё очень просто будет
Код: Выделить всё
uint8_t tmp = _RBIT(/*любое_выражение*/)>>24;- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=3815966#p3815966"]Макросом будет точно так же, но хужее.[/uquote]
Почему? Или чем хужее?
Почему? Или чем хужее?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
constexpr-ы обычно лаконичнее и понятнее развесистых макросов
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=3815966#p3815966"]Определись, тебе нужно константы этапа компиляции или на рантайме вычислять?[/uquote]
При компиляции. И там далеко не кортекс.
Значит, использовать constexpr?
При компиляции. И там далеко не кортекс.
Значит, использовать constexpr?
Спойлер
Код: Выделить всё
constexpr uint8_t rbit8(uint8_t x)
{
return (x & 0x01 ? 0x80 : 0) |
(x & 0x02 ? 0x40 : 0) |
(x & 0x04 ? 0x20 : 0) |
(x & 0x08 ? 0x10 : 0) |
(x & 0x10 ? 0x08 : 0) |
(x & 0x20 ? 0x04 : 0) |
(x & 0x40 ? 0x02 : 0) |
(x & 0x80 ? 0x01 : 0);}[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]