我是靠谱客的博主 温婉煎饼,最近开发中收集的这篇文章主要介绍error: 'TIMSK' was not declared in this scope 如何解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

软件用的是Arduino 1.85  单片机是ATtiny 85


错误信息

sketchServo8Bit.cpp: In static member function 'static void ServoSequencer::servoTimerSetup()':



Servo8Bit.cpp:457: error: 'TIMSK' was not declared in this scope


     TIMSK |= (1 << OCIEnx);


     ^


sketchServo8Bit.cpp: In static member function 'static void ServoSequencer::setupTimerPrescaler()':


Servo8Bit.cpp:516: error: 'TCCR1' was not declared in this scope


         TCCR1 = 0;


         ^


sketchServo8Bit.cpp: In static member function 'static void ServoSequencer::timerCompareMatchISR()':


Servo8Bit.cpp:635: error: 'TIFR' was not declared in this scope


             TIFR = (1 << OCF0A);  // write logical 1 to the OCF0A flag to clear it


             ^


exit status 1

'TIMSK' was not declared in this scope


程序代码

// 2015 Coretech Robotics 
// Servo Library: http://www.cunningturtle.com/attiny4585-servo-library/
// IR Code: David Cuartielles: http://forum.arduino.cc/index.php?topic=17965.0


#include "Servo8bit.h" 
#define trigPin 0
#define echoPin 3


int ir_pin = 4;
int motorPinL = 1;
int motorPinR = 2;
int key;            
int start_bit = 2000; 
int bin_1 = 1000; 
int bin_0 = 400;   
unsigned long stoptimer;
boolean autoMode;
Servo8Bit motorL, motorR;


void setup() {


   pinMode(ir_pin, INPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  motorL.attach(motorPinL);
  motorR.attach(motorPinR);
  //Serial.begin(9600);
  digitalWrite(0, HIGH);
}


void loop() {
  key = getIRKey();
  if (key != -1) {
    //Serial.println(key);
    if (key < 755 && key > 750){moveMotors(160, 160);} //up
    if (key < 2805 && key > 2795){moveMotors(10, 10);} //down
    if (key < 725 && key > 715){moveMotors(10, 160);} //left
    if (key < 3285 && key > 3275){moveMotors(160, 10);} //right
    if (key < 2677 && key > 2667){
      autoMode = !autoMode;
      moveMotors(94, 85);
      delay(400);
    }
    if (key < 2710 && key > 2695){
      motorL.detach();
      motorR.detach();
    }
  }
  stoptimer = millis();
}


void moveMotors(int speedL, int speedR){
  motorL.write(speedL);
  motorR.write(180-speedR);
}


int getIRKey() {
 int data[12];
 while(pulseIn(ir_pin, LOW, 20000) < 2200) {
   if(stoptimer+20 < millis() && !autoMode)   moveMotors(94, 85);
   if(autoMode){
     if(getDistance() < 10){
       moveMotors(94, 20);
       delay(400); 
     }
     else{
       moveMotors(120, 120); 
     }
   }
   key = 0;
 }
 stoptimer = millis()+1000;
 data[0] = pulseIn(ir_pin, LOW);
 data[1] = pulseIn(ir_pin, LOW);
 data[2] = pulseIn(ir_pin, LOW);
 data[3] = pulseIn(ir_pin, LOW);
 data[4] = pulseIn(ir_pin, LOW);
 data[5] = pulseIn(ir_pin, LOW);
 data[6] = pulseIn(ir_pin, LOW);
 data[7] = pulseIn(ir_pin, LOW);
 data[8] = pulseIn(ir_pin, LOW);
 data[9] = pulseIn(ir_pin, LOW);
 data[10] = pulseIn(ir_pin, LOW);
 data[11] = pulseIn(ir_pin, LOW);


 for(int i=0;i<=11;i++) {


   if(data[i] > bin_1) {
       data[i] = 1;
   }  else {
       if(data[i] > bin_0) { 
         data[i] = 0;
       } else {
        data[i] = 2; 
       }
   }
 }


 for(int i=0;i<=11;i++) {
   if(data[i] > 1) {
       return -1;     
   }
 }


 int result = 0;
 int seed = 1;
 for(int i=11;i>=0;i--) {    
   if(data[i] == 1) {
       result += seed;
   }
   seed = seed * 2;
 }


 return result;                  
}


int getDistance(){
  long duration;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  return (duration/2) / 29.1;
}  

最后

以上就是温婉煎饼为你收集整理的error: 'TIMSK' was not declared in this scope 如何解决的全部内容,希望文章能够帮你解决error: 'TIMSK' was not declared in this scope 如何解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部