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.
@Transistor, 👍1
Обсуждение1 ответ
Лучший ответ:
Для того чтобы запрограммировать ATtiny85, вам нужен подходящий пакет поддержки платы, и вы должны настроить Arduino IDE для того, чтобы ориентироваться на этот конкретный чип.
Судя по описанию вашей проблемы, вы сделали это неделю
назад, а затем, возможно, случайно, отменили конфигурацию IDE. Теперь
IDE нацелена на тип MCU, который не имеет регистра с именем
ГИМСК
. Дважды проверьте, правильно ли настроена цель.
Другой возможностью было бы то, что Arduino.файл h для используемого вами ядра не включает автоматически avr/io.h. Если это так, добавьте
#include <avr/io.h>
в верхней части вашего кода.
Вы были правы с комментарием "нацелиться на этот конкретный чип". Arduino IDE, похоже, не сохраняет их в проекте или они переключаются, когда я работаю над Nano и переключаюсь на *использование* Nano в качестве ISP. Я добавил скринграб в свой вопрос, который теперь решен. Спасибо., @Transistor
- Как перевести ATtiny/ATmega в режим глубокого сна (чтобы годами работать от батарей), но при этом обнаруживать нажатие кнопки?
- ATtiny85 со сном и последовательным портом
- Использование внешнего сброса для запуска приема радиосигнала
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Ошибка: expected unqualified-id before 'if'
- Связь ATtiny85 с компьютером через USB
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
Для какой платы вы составляете? Вы уверены, что это был Attiny85?, @chrisl
@chrisl, да, ATtiny 85-20PU. Я использую Нано, подключенный к макетной плате, чтобы запрограммировать голый чип. Я использую процедуру [здесь](http://solosodium.github.io/2017-08-07-program-attint85-with-arduino-nano)., @Transistor