┏ωǒ┛菰独 发表于 2012-5-17 20:57:42

官方ide选择板子为atmega8后无法编译

正好自己diy了atmega8的arduino
用的usbasp
所以想搞个红外遥控
我用了iremote的库文件
但是编译的时候就是不通过
选择其他的板子,如uno什么的就可以成功编译....

这是个什么情况,,,,,求解释

附,编译错误的提示信息
源代码:
#include <IRremote.h>
#include <IRremoteInt.h>

   

         int RECV_PIN = 7;
         int sub_PIN = 8;
         int add_PIN = 9;

         
         long on1= 0x00FFA25D;
         long off1 = 0x00FFE01F;
         long on2 = 0x00FF629D;
         long subKey = 0x00FFA857;
         long on3 = 0x00FFE21D;
         long addKey = 0x00FF906F;
         long on4 = 0x00FF22DD;
         long off4 = 0x00FF6897;
         long on5 = 0x00FF02FD;
         long off5 = 0x00FF9867;
         long on6 = 0x00FFC23D;
         long off6 = 0x00FFB04f;

         IRrecv irrecv(RECV_PIN);
         decode_results results;
          // Dumps out the decode_results structure.
    // Call this after IRrecv::decode()
    // void * to work around compiler issue
    //void dump(void *v) {
    //decode_results *results = (decode_results *)v
   void dump(decode_results *results) {
      int count = results->rawlen;
      if (results->decode_type == UNKNOWN)
      {
         Serial.println("Could not decode message");
      }
      else
       {
      if (results->decode_type == NEC)
          {
         Serial.print("Decoded NEC: ");
          }
      else if (results->decode_type == SONY)
          {
         Serial.print("Decoded SONY: ");
          }
      else if (results->decode_type == RC5)
          {
         Serial.print("Decoded RC5: ");
          }
      else if (results->decode_type == RC6)
          {
         Serial.print("Decoded RC6: ");
          }
         Serial.print(results->value, HEX);
         Serial.print(" (");
         Serial.print(results->bits, DEC);
         Serial.println(" bits)");
       }
         Serial.print("Raw (");
         Serial.print(count, DEC);
         Serial.print("): ");

      for (int i = 0; i < count; i++)
         {
            if ((i % 2) == 1) {
            Serial.print(results->rawbuf*USECPERTICK, DEC);
         }
          else
         {
            Serial.print(-(int)results->rawbuf*USECPERTICK, DEC);
         }
          Serial.print(" ");
         }
            Serial.println("");
         }
void setup()
      {
       pinMode(RECV_PIN, INPUT);
       pinMode(sub_PIN,OUTPUT);
       pinMode(add_PIN,OUTPUT);
       pinMode(13,OUTPUT);
       Serial.begin(9600);

       irrecv.enableIRIn(); // Start the receiver
      }

   int on = 0;
   unsigned long last = millis();

void loop()
   {
      
       if (irrecv.decode(&results))
      {
         // If it's been at least 1/4 second since the last
         // IR received, toggle the relay
         if (millis() - last > 250)
         {
            on = !on;
   //       digitalWrite(8, on ? HIGH : LOW);
            digitalWrite(RECV_PIN , on ? HIGH : LOW);
            dump(&results);
         }

       if (results.value == subKey )
         digitalWrite(sub_PIN, HIGH);
       if (results.value == subKey )
         digitalWrite(add_PIN,HIGH);
      
         last = millis();
         digitalWrite(sub_PIN, LOW);
         digitalWrite(add_PIN, LOW);
         irrecv.resume(); // Receive the next value
       }
   }







F:\Arduino\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=100 -IF:\Arduino\arduino-1.0\hardware\arduino\cores\arduino -IF:\Arduino\arduino-1.0\hardware\arduino\variants\standard -IF:\Arduino\arduino-1.0\libraries\IRremote C:\HexArduino\remoteCtlLed.cpp -oC:\HexArduino\remoteCtlLed.cpp.o
remoteCtlLed.cpp: In function 'void loop()':
remoteCtlLed.cpp:110: warning: comparison between signed and unsigned integer expressions
remoteCtlLed.cpp:112: warning: comparison between signed and unsigned integer expressions
F:\Arduino\arduino-1.0\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=16000000L -DARDUINO=100 -IF:\Arduino\arduino-1.0\hardware\arduino\cores\arduino -IF:\Arduino\arduino-1.0\hardware\arduino\variants\standard -IF:\Arduino\arduino-1.0\libraries\IRremote -IF:\Arduino\arduino-1.0\libraries\IRremote\utility F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp -oC:\HexArduino\IRremote\IRremote.cpp.o
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:638: warning: this decimal constant is unsigned only in ISO C90
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:174: error: 'TCCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:174: error: 'COM2B1' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:182: error: 'TCCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:182: error: 'COM2B1' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:200: error: 'TIMSK2' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'TCCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'TCCR2B' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'WGM22' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'OCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:210: error: 'OCR2B' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'TCCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'TCCR2B' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:226: error: 'OCR2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:229: error: 'TIMSK2' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:229: error: 'OCIE2A' was not declared in this scope
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp: At global scope:
F:\Arduino\arduino-1.0\libraries\IRremote\IRremote.cpp:258: warning: 'TIMER2_COMPA_vect' appears to be a misspelled signal handler


┏ωǒ┛菰独 发表于 2012-5-17 21:07:40

http://i1226.photobucket.com/albums/ee417/457887107/6160fbfa.png

弘毅 发表于 2012-5-17 21:57:11

求库文件。。。。

┏ωǒ┛菰独 发表于 2012-5-17 22:11:26

库文件 包含的头文件声明 我自己做了一点改动,把路径改一下就行了

弘毅 发表于 2012-5-17 22:32:22

看了下。。。编译出来7.4K大小,已经超过了M8的最大容量。。。是不是因为大小爆了,所以报错。。。

┏ωǒ┛菰独 发表于 2012-5-17 23:07:34

弘毅 发表于 2012-5-17 22:32 static/image/common/back.gif
看了下。。。编译出来7.4K大小,已经超过了M8的最大容量。。。是不是因为大小爆了,所以报错。。。

额 有道理还就没考虑过这个...多谢啦我再压缩程序

zhangdeyue1 发表于 2012-9-28 14:33:26

┏ωǒ┛菰独 发表于 2012-5-17 23:07 static/image/common/back.gif
额 有道理还就没考虑过这个...多谢啦我再压缩程序

:)请问如何查看编译文件大小啊~!

zcbzjx 发表于 2012-9-28 16:07:51

zcbzjx 发表于 2012-9-28 16:14:08

我觉得不是这个原因,如果超过容量,应该在上传的时候报错,你这个应该是bootloader比较老,很多宏没有定义,建议用optiboot的bootloader,空间应该够用,1024*8-512=7680

wsxqazx 发表于 2014-1-18 09:42:21

遇到同样问题atmega16L 的,按楼主方法解决不了

elbahk 发表于 2014-2-7 15:07:28

M8 不能用在 IR 上,改用 M328 吧
页: [1]
查看完整版本: 官方ide选择板子为atmega8后无法编译