Ви не увійшли.
Помогите разобраться с вызовом обработчика прерывания TIM0_OVF_vect
// the setup routine runs once when you press reset:
void setup() {
//конфигурация микроконтроллера
DDRB=0x03; //настройка 0-го и 1-го пина порта В на выход
GIMSK=0x40; //разрешение внешнего прерывания INT0
MCUCR=0x03; //генерация внешнего прерывания по нарастающему фронту сигнала на выходе INT0
GIFR=0x00; //сброс флагов внешнего прерывания INT0
TIMSK=0x02; //разрешение по переполнению таймера / счетчика T0
TIFR=0x00; //сброс флагов прерываний таймера / счетчика T0
sei(); //глобальное разрешение прерываний
}
// the loop routine runs over and over again forever:
void loop() {
ISR (INT0_vect) {
PORTB=0x03; //установка 0-го и 1-го пина в единицу
GIFR=0x00; //сброс флагов внешнего прерывания INT0
TCNT0=0x64; //записываем значение 100 в счетный регистр для формирования импульса 5мс на выходах порта В
TCCR0B=0x02; //запускаем таймер / счетчик Т0
sei(); //глобальное разрешение прерываний
}
ISR (TIMER0_OVF_vect) {
PORTB=0x03; //установка 0-го и 1-го пина в ноль
TCCR0B=0x00; //остановка таймер / счетчик Т0
TIFR=0x00; //сброс флагов прерываний таймера / счетчика T0
sei(); //глобальное разрешение прерываний
}
}
Первое прерывание ISR (INT0_vect) он нормально компилирует а на второе прерывание ISR (TIMER0_OVF_vect) выдает ошибку:
Arduino: 1.8.16 (Windows 10), Плата:"Digispark (Default - 16.5mhz)"
C:Program Files (x86)Arduinoarduino-builder -dump-prefs -logger=machine -hardware C:Program Files (x86)Arduinohardware -hardware C:Users-//-AppDataLocalArduino15packages -tools C:Program Files (x86)Arduinotools-builder -tools C:Program Files (x86)Arduinohardwaretoolsavr -tools C:Users-//-AppDataLocalArduino15packages -built-in-libraries C:Program Files (x86)Arduinolibraries -libraries C:Users-//-DocumentsArduinolibraries -fqbn=digistump:avr:digispark-tiny -ide-version=10816 -build-path C:Users-//-AppDataLocalTemparduino_build_949308 -warnings=none -build-cache C:Users-//-AppDataLocalTemparduino_cache_471186 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.micronucleus.path=C:Users-//-AppDataLocalArduino15packagesdigistumptoolsmicronucleus2.0a4 -prefs=runtime.tools.micronucleus-2.0a4.path=C:Users-//-AppDataLocalArduino15packagesdigistumptoolsmicronucleus2.0a4 -prefs=runtime.tools.avr-gcc.path=C:Users-//-AppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5 -prefs=runtime.tools.avr-gcc-4.8.1-arduino5.path=C:Users-//-AppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5 -verbose F:TahoTaho.ino
C:Program Files (x86)Arduinoarduino-builder -compile -logger=machine -hardware C:Program Files (x86)Arduinohardware -hardware C:Users-//-AppDataLocalArduino15packages -tools C:Program Files (x86)Arduinotools-builder -tools C:Program Files (x86)Arduinohardwaretoolsavr -tools C:Users-//-AppDataLocalArduino15packages -built-in-libraries C:Program Files (x86)Arduinolibraries -libraries C:Users-//-DocumentsArduinolibraries -fqbn=digistump:avr:digispark-tiny -ide-version=10816 -build-path C:Users-//-AppDataLocalTemparduino_build_949308 -warnings=none -build-cache C:Users-//-AppDataLocalTemparduino_cache_471186 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.micronucleus.path=C:Users-//-AppDataLocalArduino15packagesdigistumptoolsmicronucleus2.0a4 -prefs=runtime.tools.micronucleus-2.0a4.path=C:Users-//-AppDataLocalArduino15packagesdigistumptoolsmicronucleus2.0a4 -prefs=runtime.tools.avr-gcc.path=C:Users-//-AppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5 -prefs=runtime.tools.avr-gcc-4.8.1-arduino5.path=C:Users-//-AppDataLocalArduino15packagesarduinotoolsavr-gcc4.8.1-arduino5 -verbose F:TahoTaho.ino
Using board 'digispark-tiny' from platform in folder: C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7
Using core 'tiny' from platform in folder: C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7
Detecting libraries used...
"C:\Users\-//-\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10816 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny" "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\variants\digispark" "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\sketch\Taho.ino.cpp" -o nul
Generating function prototypes...
"C:\Users\-//-\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10816 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny" "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\variants\digispark" "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\sketch\Taho.ino.cpp" -o "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\preproc\ctags_target_for_gcc_minus_e.cpp"
Компиляция скетча...
"C:\Users\-//-\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5/bin/avr-g++" -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -MMD -mmcu=attiny85 -DF_CPU=16500000L -DARDUINO=10816 -DARDUINO_AVR_DIGISPARK -DARDUINO_ARCH_AVR "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\cores\tiny" "-IC:\Users\-//-\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\variants\digispark" "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\sketch\Taho.ino.cpp" -o "C:\Users\-//-\AppData\Local\Temp\arduino_build_949308\sketch\Taho.ino.cpp.o"
In file included from C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7corestiny/WProgram.h:8:0,
from C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7corestiny/Arduino.h:4,
from C:Users-//-AppDataLocalTemparduino_build_949308sketchTaho.ino.cpp:1:
F:TahoTaho.ino: In function 'void loop()':
Taho:18:3: error: expected unqualified-id before string constant
ISR (INT0_vect) {
^
Taho:18:19: error: a function-definition is not allowed here before '{' token
ISR (INT0_vect) {
^
In file included from C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7corestiny/WProgram.h:8:0,
from C:Users-//-AppDataLocalArduino15packagesdigistumphardwareavr1.6.7corestiny/Arduino.h:4,
from C:Users-//-AppDataLocalTemparduino_build_949308sketchTaho.ino.cpp:1:
Taho:26:3: error: expected unqualified-id before string constant
ISR (TIMER0_OVF_vect) {
^
Taho:26:25: error: a function-definition is not allowed here before '{' token
ISR (TIMER0_OVF_vect) {
^
exit status 1
expected unqualified-id before string constant
Понимаю что ошибка скорее всего синтаксическая, возможно нужно подключить библиотеку или возможно нужно описать сами вектора прерывания. но пока информацию не нашел что да как по этому прошу помощи у знающих. Заранее спасибо.
Неактивний
Проблема решена переносом скобки подпрограммы loop() в нужное место.
окончательно программа стала выглядеть так:
// the setup routine runs once when you press reset:
void setup() {
//конфигурация микроконтроллера
DDRB = 0x03; //настройка 0-го и 1-го пина порта В на выход
GIMSK = 0x40; //разрешение внешнего прерывания INT0
MCUCR = 0x03; //генерация внешнего прерывания по нарастающему фронту сигнала на выходе INT0
GIFR = 0x00; //сброс флагов внешнего прерывания INT0
TIMSK = 0x02; //разрешение по переполнению таймера / счетчика T0
TIFR = 0x00; //сброс флагов прерываний таймера / счетчика T0
sei(); //глобальное разрешение прерываний
}
// the loop routine runs over and over again forever:
void loop() {
}
ISR (INT0_vect) {
PORTB = 0x03; //установка 0-го и 1-го пина в единицу
GIFR = 0x00; //сброс флагов внешнего прерывания INT0
TCNT0 = 0x64; //записываем значение 100 в счетный регистр для формирования импульса 5мс на выходах порта В
TCCR0B = 0x02; //запускаем таймер / счетчик Т0
sei(); //глобальное разрешение прерываний
}
ISR (TIMER0_OVF_vect) {
PORTB = 0x03; //установка 0-го и 1-го пина в ноль
TCCR0B = 0x00; //остановка таймер / счетчик Т0
TIFR = 0x00; //сброс флагов прерываний таймера / счетчика T0
sei(); //глобальное разрешение прерываний
}
Неактивний