GIMSK' was not declared in this scope

Я программирую ATtiny 85, используя Arduino IDE и Arduino Nano как "Arduino as ISP" для программирования ATtiny. Мне это удалось неделю назад, и теперь я хочу запрограммировать второй чип, но получить "GIMSK" не было объявлено в этой области ошибки во время компиляции.

GIMSK вызывается в начале функции sleep (). Я попытался добавить #include <avr/interrupt.h>, но продолжал получать ошибку компиляции.

#include <avr/sleep.h>    // Режимы сна
#include <avr/power.h>
#include <elapsedMillis.h>
const int hallPin = 2;     // номер вывода эффекта Холла
const int magnetPin =  1;      // номер вывода магнита
const long debouncing_time = 15; //Время снятия в миллисекундах
// переменные изменятся:
volatile int hallState = 0;         // переменная для хранения счетчика холла
volatile unsigned long last_micros;
elapsedMillis timer;

void setup()
{
  pinMode(magnetPin, OUTPUT);
  pinMode(hallPin, INPUT);
  digitalWrite(hallPin, HIGH);    // pullup включен.
  // Присоединить прерывание к вектору ISR
  attachInterrupt(0, pin_ISR, RISING); //по умолчанию вывод interupt всегда равен 0 на attiny85 (физический вывод 7)
  timer = 0;
}

void sleep()
{
    GIMSK |= _BV(PCIE);                     // Включить прерывания смены выводов
    PCMSK |= _BV(PCINT2);                   // Использовать PB2 в качестве вывода прерывания
    ADCSRA &= ~_BV(ADEN);                   // ADC off
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // заменяет вышеприведенный оператор
    sleep_enable();                         // Устанавливает бит включения сна в регистре MCUCR (БИТ SE).
    sei();                                  // Включить прерывания
    sleep_cpu();                            // сон
    cli();                                  // Отключить прерывания
    PCMSK &= ~_BV(PCINT2);                  // Отключить PB2 в качестве вывода прерывания
    sleep_disable();                        // Clear SE bit
    ADCSRA |= _BV(ADEN);                    // ADC on
    sei();                                  // Включить прерывания
} // сон
etc.

Кто-нибудь может дать мне указатель? Я сохранил свою работу, поэтому я озадачен этой ошибкой.

Спасибо.


Решение:

Конфигурация программирования для ATtiny 85 через Nano as ISP.

, 👍1

Обсуждение

Для какой платы вы составляете? Вы уверены, что это был Attiny85?, @chrisl

@chrisl, да, ATtiny 85-20PU. Я использую Нано, подключенный к макетной плате, чтобы запрограммировать голый чип. Я использую процедуру [здесь](http://solosodium.github.io/2017-08-07-program-attint85-with-arduino-nano)., @Transistor


1 ответ


Лучший ответ:

0

Для того чтобы запрограммировать ATtiny85, вам нужен подходящий пакет поддержки платы, и вы должны настроить Arduino IDE для того, чтобы ориентироваться на этот конкретный чип.

Судя по описанию вашей проблемы, вы сделали это неделю назад, а затем, возможно, случайно, отменили конфигурацию IDE. Теперь IDE нацелена на тип MCU, который не имеет регистра с именем ГИМСК. Дважды проверьте, правильно ли настроена цель.

Другой возможностью было бы то, что Arduino.файл h для используемого вами ядра не включает автоматически avr/io.h. Если это так, добавьте

#include <avr/io.h>

в верхней части вашего кода.

,

Вы были правы с комментарием "нацелиться на этот конкретный чип". Arduino IDE, похоже, не сохраняет их в проекте или они переключаются, когда я работаю над Nano и переключаюсь на *использование* Nano в качестве ISP. Я добавил скринграб в свой вопрос, который теперь решен. Спасибо., @Transistor