Я только что проиграл дни, буквально, ~ 25 часов работы, из-за попытки отладить код из-за чего-то простого, чего я не знал, делая фиж-шестигранную боевой бот (см. Его здесь и на моем личном веб-сайте здесь). < /p>
Оказывается, уменьшается элемент массива в Co ++, не в Avr Atmega328 8-b-b-b-b-b-b-bitinir (Not avr Atmega328 8-b-b-bitinir (Not avr Atmega328 8-b-b-bitinir (Not avr Atmega3288-b-b-bitinir (Not avr Atmega328 8-b-bitinir). Атомная операция и требует атомных охранников (а именно отключения прерываний). Почему это ??? Кроме того, каковы все методы C, чтобы обеспечить атомный доступ к переменным на микроконтроллере Atmel AVR?// Global variables:
const uint8_t NUM_INPUT_PORTS = 3;
volatile uint8_t numElementsInBuf[NUM_INPUT_PORTS];
ISR(PCINT0_vect) // External pin change interrupt service routine on input port 0
{
// Do stuff here
for (uint8_t i=0; i
Подробнее здесь: https://stackoverflow.com/questions/363 ... atomic-why
C ++, уменьшая элемент однобайтовой (летучих) массива, не является атомным! ПОЧЕМУ? (Также: как я могу придумать атомнос ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Преобразование однобайтовой строки символов (половинная ширина) в двухбайтовую (полная ширина)
Anonymous » » в форуме C# - 0 Ответы
- 95 Просмотры
-
Последнее сообщение Anonymous
-