AVR Studio4 をダウンロードし C言語でプログラムを作りたいのですが WinAVR もいれ AVR Gccで製作しました。
簡単な テスト サンプルをコピー ビルドすると

make: Makefile: No such file or directory
make: *** No rule to make target `Makefile'. Stop.
Build failed with 2 errors and 0 warnings...

が表示され コンパイルできません。 
C言語プログラム すべて このようなエラーが出て
コンパイルできません。 
どのように直せば C言語プログラム受け付けてくれるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

つい昨日まで自分も同じ結果で落胆してましたが、やっと今日 出来ました。


もし、パソコンの名前、ユーザー名も含めてフォルダーの名前も含めて
どこかに全角文字を使っていたなら
PCで使用している名前、フォルダー名 すべてを半角英数字にしてみてください。
皆さんと俺の条件が違うかもしれないけど、たぶん 行けると思います。
    • good
    • 1

最近H8系からAVRに乗り換えて格闘しています



AVR STUDIOは、makefileは自分で作らないとダメなようですね

最初のエラーは、ファイル名(拡張子.cを除く)が入っていないということ、2番目はAVRの型番が入っていないということで、該当箇所をエディターで修正すれば動くと思います

H8より敷居が高く、入門書も間違いが多く大変ですが、いろいろバリエーションがあって安いのが魅力的です

参考URL:http://www.geocities.jp/kuman2600/kantanouyou.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAVRのUSART接続で困っています。

AVRのUSART接続で困っています。
AVR初心者です。Atiny2313に送受モニタ用のLED2個と秋月のFT232Rシリアル-USB変換モジュールのみを接続した簡単な回路を組み、双方のTXD,RXD同士を交差接続し、PCとUSART経由でデータ転送をする実験をしています。変換モジュールの電源はUSBバスから、AVR側の電源は安定化電源またはモジュール経由でUSBバスから供給しました。データの送受信自体は何の問題もないのですが、わからないことがありご教示下さい。

1)変換モジュールのTXD,RXDをAVR側のRXD,TXDに接続しただけで、AVRに電源が供給されてしまい、わざわざ別電源を供給しなくともAVRが勝手に動いてしまいます。各部の電圧は正規に電源を供給した時よりも0.5V程度低めにでますが、AVR自体の動作はUSARTを使う使わないにかかわらず(例えばLEDポートの初期化のみでも)正常です。AVR側の配線とソフトは何度もチェックして間違いないと確信しています。こんなものなのでしょうか?

2)USART初期化ルーチンで教科書どおり下記の様に書きました。デバッガで追跡すると最初はUBRRHにゼロが入るのですが、なぜか6行目を実行するとUCSRCの内容と同じものがUBRRHにも入ってしまいます。
ldi r16, 0
out UBRRH, r16
ldi r16, 0x19;bau rate 2400 at 1MHz
out UBRRL, r16
ldi r16, 0b00000110;async, no parity
out UCSRC, r16;1 stop bit data 8bit

いろいろ検討したところ、UCSRCのMSBを1(ldi r16, 0b10000110)としてやるとUBRRHにははいらないことがわかりました。ATMELのマニュアルではこのビットはリザーブなおでさわるなとありそれ以上の説明はありません。何かおかしなことをやっているのでしょうか? この簡単な6行だけのプログラムですら1)、2)の問題が起きます。一体何が悪いのか切り分けができず困っています、アドバイスをお願いします。

AVRのUSART接続で困っています。
AVR初心者です。Atiny2313に送受モニタ用のLED2個と秋月のFT232Rシリアル-USB変換モジュールのみを接続した簡単な回路を組み、双方のTXD,RXD同士を交差接続し、PCとUSART経由でデータ転送をする実験をしています。変換モジュールの電源はUSBバスから、AVR側の電源は安定化電源またはモジュール経由でUSBバスから供給しました。データの送受信自体は何の問題もないのですが、わからないことがありご教示下さい。

1)変換モジュールのTXD,RXDをAVR側のRXD,TXDに接続しただけで、AV...続きを読む

Aベストアンサー

>接続しただけで、AVRに電源が供給されてしまい

AVRマイコンに、予定の電源供給元([電源1]とします)からの
供給がない時でも、AVRマイコンの信号入力端子に"High"レベルの信号入力があると
それが電源端子の電圧も引き上げようとします。
電源1 がメカスイッチなどで切り離されてる、AVRマイコン部分の消費電力がごく少ない、と
顕著です。

これは、信号端子の内部に保護回路として電源端子に向かってダイオードが入っている為です。
>0.5V程度低めにでますが、
はダイオードの順方向電圧降下分、低くなる、という事です。


電源投入順序によってはうまく初期化がされない事も起こり得るし、
基本的に半導体部品に「電源供給なしで信号端子に電圧がかかる状態」はまずいです。
(先の保護回路により、すぐ壊れることはないでしょうけど)
電源供給元と供給先が複数ある場合は
・一方で他方をON/OFFコントロールする
・電源OFF部分にに高い電圧を与えないように
 「電源ON部分の出力はLowかハイインピーダンスにする」
のようなコントロールが要ります。

この点ではなるべく電源は1つの方がいいです。

>2)USART初期化ルーチン
の方は知識がないのでわかりません。

>接続しただけで、AVRに電源が供給されてしまい

AVRマイコンに、予定の電源供給元([電源1]とします)からの
供給がない時でも、AVRマイコンの信号入力端子に"High"レベルの信号入力があると
それが電源端子の電圧も引き上げようとします。
電源1 がメカスイッチなどで切り離されてる、AVRマイコン部分の消費電力がごく少ない、と
顕著です。

これは、信号端子の内部に保護回路として電源端子に向かってダイオードが入っている為です。
>0.5V程度低めにでますが、
はダイオードの順方向電圧降下分、低くなる...続きを読む

Qvisual studioのC言語とフリーソフトのC言語ツールの違い

前にvisual studioでC言語の勉強を行っており、再び始めようかと思っているものです。

少し疑問に思ったのですが、visual studioのC言語とC言語のフリーソフトの違いは何でしょうか?

Aベストアンサー

現実には「フリーソフト」が何かにもよるのでしょうが、
原則としては「C言語」の仕様範囲であるかぎり、
何処の製品/プロダクトだろうが何も変わりません。
(「C言語」は国際標準の規定がありますので、この範囲では大差ない)

後は、すでにあるようなWindowsアプリ(GUI)の作りやすさとか、
IDE(プログラム用の統合ソフト)、その他ツールなどが付いてるだけです。

QAVRマイコン ビルドエラー

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)
等と、エラーが出てビルド出来ません。

どうすればいいのでしょうか?
回答お願いします。

Aベストアンサー

> ../test3.c:0: error: MCU `atmega88p' supported for assembler only

このメッセージからすると「CコンパイラがATmega88p をサポートしていない」というエラーに見受けられます。

私の手元の環境(AVR Studio 4.18/WinAVR 20100110)では、質問者さんの挙げられたコードは、「Device:atmega88p」で作成したプロジェクトで問題無くコンパイルできましたので、
質問者さんの使われているWinAVR のバージョンが古いということはないでしょうか。

QC言語プログラムの質問です。 実数をxを読み込み次の計算をするCプログラムを作成し、そのプログラムリ

C言語プログラムの質問です。
実数をxを読み込み次の計算をするCプログラムを作成し、そのプログラムリストを記しなさい。
2sin(x)cos(x) および sin(2x)
次にこのプログラムを用いて、x=0.785を計算しなさい。

画像のプログラムを作成し、計算をしたのですが、計算結果が全て0.00000となってしまいます。
どこが間違っているか教えてください!

Aベストアンサー

scanfを以下のように変えてください。
scanf("%lf", &x);

QAVRマイコンのRESET端子について

AVRマイコンのRESET端子について質問させて頂きます。
RESET端子が汎用ポートと兼用の場合、プログラム書き込み時に、その端子をRESETか汎用ポートかをヒューズビットで選択できますが、汎用ポートとしてプログラムを書き込んだ場合、再度SPI通信でプログラムの書き込みを行うのは不可能なのでしょうか?
よろしくお願い致します。

Aベストアンサー

リセット端子を汎用IO設定にしてしまうと、もうISPによる書き込みはできなくなります。
プログラミングやヒューズビットの書き換えは、パラレルモードかHVSモードで使うしかありません。
そうなってしまったAVRチップを、簡単にISPが使えるように戻す方法はないです。

方法は以下の3通りぐらいでしょうか。

・あきらめる
 パラレルモードが可能ならライタなどを用意するのにはコストがかかりますから、1個だけのために用意するぐらいなら、諦めて新しいチップを使う方が楽でしょう。
 ISPが使えなくなったチップは残しておいてその数が溜まってきてから後述の手段を講じるほうがいいかと思います。

・パラレル/HVS対応ライタを使う
 純正のSTK500なんかは対応しています。
 ISPモードに比べると作例は少ないですが、自作例もあります。
 http://elm-chan.org/works/avrx/report.html#AVRXP

・リセッタを作る
 リセッタとは、「フューズビットの書き換えだけを行う」だけの単機能ライタです。
 ヒューズの書き換えをミスって困る人は結構いるみたいで、作例はいろいろあります。

http://zampoh.cocolog-nifty.com/blog/2008/09/avr---atmega488.html
http://www.geocities.jp/doorknov/avr/hvs.html

リセット端子を汎用IO設定にしてしまうと、もうISPによる書き込みはできなくなります。
プログラミングやヒューズビットの書き換えは、パラレルモードかHVSモードで使うしかありません。
そうなってしまったAVRチップを、簡単にISPが使えるように戻す方法はないです。

方法は以下の3通りぐらいでしょうか。

・あきらめる
 パラレルモードが可能ならライタなどを用意するのにはコストがかかりますから、1個だけのために用意するぐらいなら、諦めて新しいチップを使う方が楽でしょう。
 ISPが使えなくなったチッ...続きを読む

QC言語でのプログラムの作り方

はじめまして。C言語初心者の中学一年生です。
C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。
”hello”と表示するプログラムの作り方を教えてください。

使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。
中学生でも分かるように教えてください。
エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

Aベストアンサー

Google等で「Visual Studio C言語 入門」を検索したら、
山のように解説サイトが出てきます。
それらの中から自分に合ったものを選んで、ひとまず
やってみることをお勧めします。
書店でVisual Studioを使った初心者向けの本を物色して
1冊買って見るのも手です。

その中で疑問に思ったり、よく分からないものが出た時点で
質問した方が、答える方も的確に回答できるし、効率が良く
かつ効果的です。

何もわかりません、全部教えて下さい、という姿勢では何も
身に付かないですよ。

QAVR Studio 5へ移行可能?

今まで、ATmega88のC言語プログラムをAVR Studio4.18 + WINAVRで書いていたのですが、AVR Studio5が登場してきて、今まで作ったC言語のファイルをそのまま移行してコンパイルすることは可能なのでしょうか?


どうぞ、ご教授頂きますよう、お願いいたします。

Aベストアンサー

基本的には、そのまま移行できます。

ただし、(これは、AVR Studio のバージョンの問題というより、WinAVRの方のバージョンの問題ですが)、
WinAVR(AVR toolchain)側のgccのバージョンが変わることにより、最適化の傾向が変わる場合もありますので、
・volatileの使い方をミスっているなど「たまたま動いていたプログラム」が、違うバージョンのgccでは動かなくなる、
・出力コードサイズがメモリ容量ぎりぎりだったりすると、つがうバージョンのgccではメモリが収まらなくなる、
といったことになる可能性は否定できません。

Qc++言語で、上達に役立つコードを書きたい。 c言語は一通りやって来てます。仕事での使用経験はない

c++言語で、上達に役立つコードを書きたい。

c言語は一通りやって来てます。仕事での使用経験はないです。
基本情報の資格は取ってます

新しくc++を学んだのですが、上達の為に何を作ろうか悩んでます。
以下の条件に合う、要求要件なら何でも知りたいです

・1週間程度で作成出来る
・業務にも応用のききそうな内容

また、参考になるコードあるかもってサイトも、もしご存知でしたら、ぜひ。

Aベストアンサー

下記サイトでスキルを確かめてみるのはどうでしょう。
https://codeiq.jp/

QAVR studio6でeepromリードできない

AVR studio6.1の環境をPCに入れてATmega88のプログラムを行っています。ATmega88に電源を投入直後に初期設定のために、あらかじめeeprom内に設定しているプリセット値を読み込むためにeeprom_read_byte関数を使用してデータを読み出したいと思っています。

テストとしてeepromの0x00番地のデータを読み出そうとしているのですが、データを読み出すことができず困っています。


volatile u8 test01;
volatile u8 test02;
volatile u8 test03;
volatile u8 test04;
volatile int addr;


addr = 0x00;
eeprom_busy_wait();
test01 = eeprom_read_byte(&addr);
addr = 0x01;
eeprom_busy_wait();
test02 = eeprom_read_byte(&addr);
addr = 0x02;
eeprom_busy_wait();
test03 = eeprom_read_byte(&addr);
addr = 0x03;
eeprom_busy_wait();
test04 = eeprom_read_byte(&addr);



このようなプログラムを組んでAVR Studio6.1のシミュレーションモードで、eepromのアドレス0x00番地から順に0x00,0x01,0x02,0x03,0x04・・・・  このように設定してみたのですが、

実際にシミュレーションしてみるとeeprom_read_byteの戻り値に代入されたtest01,test02,test03,test04には0x00という値が代入されeeprom内からのデータの読み出しに失敗しているようです。



eepromデータの取り扱いに関するプログラムの書き方などご教示頂きますよう、お願い致します。

AVR studio6.1の環境をPCに入れてATmega88のプログラムを行っています。ATmega88に電源を投入直後に初期設定のために、あらかじめeeprom内に設定しているプリセット値を読み込むためにeeprom_read_byte関数を使用してデータを読み出したいと思っています。

テストとしてeepromの0x00番地のデータを読み出そうとしているのですが、データを読み出すことができず困っています。


volatile u8 test01;
volatile u8 test02;
volatile u8 test03;
volatile u8 test04;
volatile int addr;


addr = 0x00;
eeprom_busy...続きを読む

Aベストアンサー

>実際にシミュレーションしてみるとeeprom_read_byteの戻り値に代入されたtest01,test02,test03,test04には0x00という値が代入されeeprom内からのデータの読み出しに失敗しているようです。

アドレス指定がおかしいからでしょう。

volatile int addr;
addr = 0x00;
test01 = eeprom_read_byte(&addr);

で、eeprom_read_byte()に渡しているアドレスは0x0000ではなく
「変数addrが置かれているRAMのアドレス」です。
その場所がEEPROMのアドレス範囲外であれば、失敗することになるでしょうね。
# マイコン内のRAMアドレスとEEPROMのアドレス範囲がどう管理されているのか…という問題はあるかと思われますが。

http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html#ga2d4ee8b92a592c764785fb5e4af5662b
引数の型から、「&addr」としたのかも知れませんが…。

>eepromのアドレス0x00番地から順に0x00,0x01,0x02,0x03,0x04・・・・  このように設定してみたのですが、

ならば、
volatile uint8_t *addr;
addr = 0x00;
test01 = eeprom_read_byte(addr);
addr = 0x01;
test02 = eeprom_read_byte(addr);
とかやるべきかと。
# 変数経由しないなら…
# test01 = eeprom_read_byte((const uint8_t *)0x00);
# test02 = eeprom_read_byte((const uint8_t *)0x01);
# ですかね。

>実際にシミュレーションしてみるとeeprom_read_byteの戻り値に代入されたtest01,test02,test03,test04には0x00という値が代入されeeprom内からのデータの読み出しに失敗しているようです。

アドレス指定がおかしいからでしょう。

volatile int addr;
addr = 0x00;
test01 = eeprom_read_byte(&addr);

で、eeprom_read_byte()に渡しているアドレスは0x0000ではなく
「変数addrが置かれているRAMのアドレス」です。
その場所がEEPROMのアドレス範囲外であれば、失敗することになるでしょうね。
# マイコン内のRA...続きを読む

QC言語です 整数nを入力すると1+2+....+nという計算式と 合計値を出力するプログラムを作りた

C言語です
整数nを入力すると1+2+....+nという計算式と
合計値を出力するプログラムを作りたいの
ですが
このようになってしまいます
なぜでしょうか?

Aベストアンサー

printf("+%d=",i); → printf("+%d",i);
printf("%d",sum); → printf("=%d",sum);

でそ?


人気Q&Aランキング

おすすめ情報