• ベストアンサー

AVRマイコン ビルドエラー

AVRマイコンを #include <avr/io.h> int main(void) { DDRD =0b11111111; PORTD=0b11111111; } で、ビルドしようとしているのですが、 ../test3.c:0: error: MCU `atmega88p' supported for assembler only と、その後に ../test3.c:5: error: `DDRD' undeclared (first use in this function) 等と、エラーが出てビルド出来ません。 どうすればいいのでしょうか? 回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

> ../test3.c:0: error: MCU `atmega88p' supported for assembler only このメッセージからすると「CコンパイラがATmega88p をサポートしていない」というエラーに見受けられます。 私の手元の環境(AVR Studio 4.18/WinAVR 20100110)では、質問者さんの挙げられたコードは、「Device:atmega88p」で作成したプロジェクトで問題無くコンパイルできましたので、 質問者さんの使われているWinAVR のバージョンが古いということはないでしょうか。

shugo123
質問者

お礼

回答ありがとうございます。 返信遅れてすいませんでした。 色々試してみたところ、ソフトの方の不具合でした。

関連するQ&A

  • avr studioのビルドエラーについて

    avr studio 6にてプログラミングしようとしている超初心者です 書き込み機器をmkII、atmega328pに書き込もうとしております しかし、エラーが出てしまい、どうしてもビルドが成功できません。 質問なのですが、こちらのサイト(http://www.diotown.com/creative/2011/05/arduino-de-pwm-controller.h...)にて行っているものを そのままプログラミングしてみようと リンクについていたソース(http://www006.upp.so-net.ne.jp/neueziel/pp/powerpack_r.txt) を #include <avr/io.h>からコピーしてビルドしてみました。 ですが、ビルドがエラー15個、警告5個出てしまいました。 そのうちの数か所を記載しますのでどうすればよいかアドバイスよろしくお願いします。 説明 行 列 プロジェクト (1)エラー 1 unknown type name 'byte' 190 1 VVVF (2)エラー 5 'OUTPUT' undeclared (first use in this function) 291 17 VVVF (3)エラー 9 'HIGH' undeclared (first use in this function) 330 20 VVVF (4)エラー 12 'word' undeclared (first use in this function) 582 26 VVVF (5)エラー 13 expected ';' before 'light' 582 31 VVVF (6)エラー 14 'B00010001' undeclared (first use in this function) 583 14 VVVF (7)警告 4 implicit declaration of function 'pinMode' [-Wimplicit-function-declaration]291 2 VVVF (8)警告 7 implicit declaration of function 'swrite' [-Wimplicit-function-declaration]327 4 VVVF (9)警告 8 implicit declaration of function 'digitalWrite' [-Wimplicit-function-declaration]330 3 VVVF (10)警告 10 implicit declaration of function 'delay' [-Wimplicit-function-declaration] 332 3 VVVF (11)警告 11 implicit declaration of function 'analogRead' [-Wimplicit-function-declaration]344 4 VVVF 以上ですよろしくお願いします

  • Win10 Avr Build エラー

    Win10 AvrStudio4.19 で ASM は Build Run Enter で 正常ですが GCC を Build Run Enter とすると " AVRStudio MFC Application は動作を停止しました。{プログラムの終了}" と表示が でる HEX ファイルは一応できているがシミレーションに移れない。アプリは AvrStudio4.19 をインストール してから-toolchain-3.4.1 を インストール してあります。Web で ビルドエラーで検索すると 結果はStudio4をインストしtoolchain-3.4.1 をインストすれば GCC を 正常にコンパイルできました。の内容で 終わっているもの ばかりです。AVRStudio MFC Application は動作を停止しました。ここの異常を修復する方法はないでしょうか。 試した GCC ファイル 下記 //**TI2313 #include <avr/io.h> int main() { DDRD = 0b00000001; while(1) { PORTD = 0b00000001; } return 0; }

  • AVRのC言語について幾つか教えてください。

    AVRにCでプロプラムしてみようと思い、プログラムしてみています。 検索しても良くわからない事が幾つか有ったので質問させて下さい。 利用しているマイコンは2313です。 io.h内で各ペリフェラルのアドレスのような物を関連付けしている「_SFR_IO8()」っていうのと「_SFR_IO16()」っていう関数?の働きが良くわかりません。 printf()関数とか使えれば試せますが… #define  PORTD  _SFR_IO8(0x12) 等となっているので、 _SFR_IO8(0x11) = 0x7f; _SFR_IO8(0x12) = 0x7f; と書けばエラーを出さずにコンパイル出来ますし実行できます。 ですが関数ですとこういった使い方が出来ないように思うのですが… AVRに限らずC言語の機能の一部なのかも知れませんが今まで使った事が無い物なので無知でして、何方か知恵を貸していただけませんか?

  • AVR マイコンで実現したいことができません。

    はじめまして。上記表題で困っております。当方初心者です。宜しくお願いいたします。 環境:AVR STK500,AVR STUDIO4(WinXPSP3)(AVR GCC(c言語)),ATmega8515 /*-------------------------------------------------------------------------------*/ 目的:100ピンのコネクタが両端に付いたケーブルを製造(100ピンはクロスしないストレートと仮定)しており、その検査工程で使う治具を開発したい。 そのテスト段階としてATmega8515(1個)を使い、2つ用意した入力ポート(16点、全て押しボタンSW)の何番目のスイッチが押下されたかを、8点のLEDを使って表現したい。(出力結果を今回はシーケンサに受け渡す予定です) /*-------------------------------------------------------------------------------*/ というものです。 例: ・PORTA,Bを入力とします。 ・PORTCを出力とします。 ・PORTA,BのSWをAの0bitから順に1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16として、 例えば 6が押下されたならば,PORTCで[00000110] 15が押下されたならば,PORTCで[00001111] 13が押下されたならば,PORTCで[00001101] というものをまず作ってみたいのですがどう作っていくのかわかりません。何方かご助言いただけないでしょうか? 以上 宜しくお願いいたします。

  • AVRマイコン開発

    #include <avr/io.h> int main(void) { volatile long i; PORTB = 0xff; DDRB = 0xff; while(1) { P1NB |= _BV(PB0); for (i = 5000; i > 0; i--); } return 0; } Build failed... No build tools defined. こんなエラーがでたのですがどこが間違っているのでしょうか?

  • IAR社のAVRマイコン用の無償版コンパイラ

    最近、AVRマイコンを使用し始めたのですが、 訳あってIAR社のコンパイラを使用しようと考えています。 試しに、IAR社のAVRマイコン用の無償版コンパイラを ダウンロードしました。 コンパイルすると、実行形式ファイルが、3個生成されました。 test.hex(おそらく本体), test_data.hex, test_eeprom.hexです。 ISPを使用してダウンロードしようとしたのですが、 ファイルを3つもダウロードできないようです。 試しにtest.hexをダウンロードしましたが、 動作しませんでした。 何か、実行形式ファイルの出力設定などがあるのでしょうか? また、簡単なサンプルプログラムなどお持ちの方いらっしゃらないでしょうか? マイコンは、Atmega128です。 ご存知の方がいらっしゃいましたら、ご教授お願い致します。

  • avr studio4 について

    #include <avr/io.h> #include "adc.h" #define SENSOR_IR 1 #define SENSOR_PORT PORTC #define SENSOR_DDR DDRC #define LED_PORT PORTD #define LED_DDR DDRD // 点灯パターン 16x8ドット unsigned int pat[]={ //123456789ABCDEFG 0b0011010001011100, 0b0101010001010010, 0b1001010001010010, 0b1001001010011100, 0b1111001010010100, 0b1001001010010100, 0b1001000100010010, 0b1001000100010010 }; int main(void) { #define DOTMAX (16*3) #define THRESHOLD 200 #define SHIFTCNT 50 int adc; int adc_back; int line; char iso; char edge=0; unsigned int cnt; unsigned int cnt_mst; unsigned int bitnum; int turn; ad_init(0); turn=0; iso=0; SENSOR_DDR |= (1<<SENSOR_IR); SENSOR_PORT |= (1<<SENSOR_IR); LED_DDR |= 0xff; turn=10000; while(turn-->0); cnt = 0; cnt_mst = 1; while(1) { bitnum = (DOTMAX * cnt) / cnt_mst; bitnum += iso; bitnum &= 0xf; // bitnum = bitnum mod 16 for(line=0; line<8; line++){ if((1<<bitnum) & pat[line]) LED_PORT |=(1<<line); else LED_PORT &= ~(1<<line); } cnt++; adc_back = adc; adc = ad_get(); if(edge==0) { if(adc < (adc_back-THRESHOLD)) { edge = ~edge; cnt_mst = cnt-(cnt/(DOTMAX*2)); cnt=0; turn++; if(turn >= SHIFTCNT){ turn=0; iso =(iso-1)& 0xf; } } }else{ if(adc > (adc_back+THRESHOLD)) { edge = ~edge; } } } return 0; } と入力してビルドしたところ Build started 5.2.2007 at 02:21:46 avr-gcc -mmcu=atmega168 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT loopled.o -MF dep/loopled.o.d -c ../loopled.c ../loopled.c: In function 'main': ../loopled.c:87:24: warning: 'adc' may be used uninitialized in this function [-Wmaybe-uninitialized] avr-gcc -mmcu=atmega168 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT adc.o -MF dep/adc.o.d -c ../adc.c avr-gcc -mmcu=atmega168 -Wl,-Map=loopled.map loopled.o adc.o -o loopled.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature loopled.elf loopled.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex loopled.elf loopled.eep || exit 0 avr-objdump -h -S loopled.elf > loopled.lss AVR Memory Usage ---------------- Device: atmega168 Program: 526 bytes (3.2% Full) (.text + .data + .bootloader) Data: 16 bytes (1.6% Full) (.data + .bss + .noinit) Build succeeded with 1 Warnings... とでてきました どうすればビルドできますか?

  • AVRプログラム 関数から戻ってこない

    AtmelStudio6 で、ATmega64A向けにプログラム行なっているのですが、 すごく、単純なところで困っています。 ICEは、AVR JTAGICE です。 main() のみで処理をさせると普通に動くのですが、関数に飛ばすと飛んだ先の 関数から戻ってこなくなるのです。 ツールかレジスタの設定が不十分なのかもしれません。 -- 問題のプログラム -- #include <avr/io.h> #include <avr/iom64a.h> #include <avr/interrupt.h> #include <util/delay.h> void test(void){ DDRA = 0xC0;//<ここは、実行される }//デバッガで見ると、ここで止まっている。 int main(void) { cli();//この関数はライブラリにあるので戻ってくる test();//この関数から帰ってこない // DDRA = 0xC0; //test();の内容をここに書くと、正常に処理して通過する。 PORTB = 0xFF; //B出力レジスタ DDRB = 0xF7; //B方向レジスタ PORTC = 0xFF; DDRC = 0xDB; while(1) { //TODO:: Please write your application code LEDを点滅させるプログラム <略> } } ------------------------------------------------------- 何方か心当たりのある方は居ないでしょうか?

  • AVR StudioのEEPROMのhexファイル

    いままでAVR Studio4というAtmelマイコンの開発環境をwindows 7のPCで使用していました。最近、PCを買い換えてwindows8になってからマイコンの書き込みで使っていたUSB接続のAVRICEデバッガがwindows8のドライバで対応していないなどがあり、AVR Studio6をインストールしたらこれらのデバッガが使えるようになったので使っていました。 しかし、複数のAtmega88のEEPROM領域に初期値として書き込んでいたhexファイルがあったのですが、なぜかAVR Studio6でダウンロード使用とすると書き込みがエラーしたりします。 まったく同じファイルをAVR Stuio4でダウンロード使用とするとこれは可能でした。 このEEPROMへのファイルのダウンロードに関してVer4とVer6ではなにか仕様に変化がありましたでしょうか? ご存じの方いらっしゃいましたらご教授頂きますようお願い致します。

  • AVRマイコン UART動作異常

    AVRマイコンのATmega168にてPCとRS-232Cにてシリアル通信(UART)を行うと最初のスタートビット'L'が正常に出ず、スタートビット'L'の後すぐに'H'に戻ってその後データビットを送っています。2回目以降のスタートビットは正常に'L'が指定したボーレートの時間幅で出ており、問題はありません。最初のスタートビットが正常に出ない原因がわかりませんので教えてください。 システムクロック:1MHz(内部発振器のみ) ボーレート:4800bps データビット数:8bit ストップビット数:1bit パリティビット数:なし -------------------------------------------- #include <avr/io.h> #include <util/delay.h> #include <avr/pgmspace.h> #define sbi(addr,bit) addr |= (1<<bit) #define cbi(addr,bit) addr &= ~(1<<bit) void port_init(void){ PORTB = 0xFE; DDRB = 0xFF; asm("NOP"); } void uart_init(void){ sbi(DDRD,1); cbi(DDRD,0); asm("NOP"); } void uart_putchar(unsigned char c){ loop_until_bit_is_set(UCSR0A,UDRE0); // asm("NOP"); UDR0 = c; } void _delay_1s(void){ int i; for(i=0;i<100;i++){ _delay_ms(10); } } int main(void) { port_init(); uart_init(); UCSR0B = _BV(TXEN0); UCSR0C = 0b00000110; UBRR0H = (uint8_t)0; UBRR0L = (uint8_t)12; while(1) { uart_putchar(0b01011010); _delay_1s(); } return 0; } -----------------------------------------------