1read 100read
2013年08月電気・電子56: AVRマイコン総合スレ Part29 (330)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
おいしくなーれ、もえもえきゅーん (113)
【自作】 オリジナルプリント基板製作スレ 11層目 (100)
オシロスコープ総合スッドレ! part15 (314)
もう組込みなんてやめた (115)
アンプを作ろうPart3 (188)
オシロスコープ総合スッドレ! part15 (314)
AVRマイコン総合スレ Part29
- 1 :2013/06/25 〜 最終レス :2013/07/31
- _____
/ /|
/ ( ゚∀゚) /.∠フ 個人でも手軽に使える
/ /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
/ __ o/.∠フ || 中心に語るスレッドです。
∠| ̄ ̄凵 ̄ ̄|∠フ || *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
.|| |_____|/||
Atmel AVR 8-Bit RISC http://www.atmel.com/products/avr/
※前スレ
AVRマイコン総合スレ Part28
http://uni.2ch.net/test/read.cgi/denki/1363384428/
- 2 :
- <参考になるページ>
・AVR-wiki: http://www34.atpages.jp/avrwiki/wiki.cgi
・AVR情報多い-chanさんのpage: http://elm-chan.org/
・avrfreaks.net avrgccその他AVR関連の総本山(英語): http://www.avrfreaks.net/
・TAP-Config: http://ww2.tiki.ne.jp/~maro/
・自分で作ってしまえ!電子工作スレッドテンプレート集: http://jbbs.shitaraba.com/bbs/read.cgi/study/3329/1067910158/
・AVR.jp 日本語のAVR資料他: http://www.avr.jp/
・ATMega168日本語データシート(翻訳中): http://awawa.hariko.com/chira-ura/
・AVR アセンブラのマニュアル(ユーザーズガイド): http://www.atmel.com/Images/doc1022.pdf
・インストラクション(命令セット)の解説: http://www.atmel.com/Images/doc0856.pdf
・条件付きアセンブルの解説(アセンブラ ver. 1.74対応):http://www.atmel.com/Images/doc2550.pdf
・アセンブラとCの連携方法: http://www.atmel.com/Images/doc1234.pdf
- 3 :
- 以上
過去スレリストはカットします。
- 4 :
- 過去スレリストの代わりに
http://search.unkar.org/2ch?q=AVR%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E7%B7%8F%E5%90%88&type=number&order=desc
- 5 :
- ◎前スレ◎
Part28 http://uni.2ch.net/test/read.cgi/denki/1363384428/
Part27 http://uni.2ch.net/test/read.cgi/denki/1353418282/
Part26 http://uni.2ch.net/test/read.cgi/denki/1346148653/
Part25 http://uni.2ch.net/test/read.cgi/denki/1341980993/
Part24 http://uni.2ch.net/test/read.cgi/denki/1332128409/
Part23 http://uni.2ch.net/test/read.cgi/denki/1323175269/
Part22 http://kamome.2ch.net/test/read.cgi/denki/1314856582/
Part21 http://kamome.2ch.net/test/read.cgi/denki/1303948383/
Part20 http://kamome.2ch.net/test/read.cgi/denki/1290517183/
Part19 http://kamome.2ch.net/test/read.cgi/denki/1284117177/
Part19 http://kamome.2ch.net/test/read.cgi/denki/1277467349/
Part18 http://science6.2ch.net/test/read.cgi/denki/1267885927/
Part17 http://science6.2ch.net/test/read.cgi/denki/1261051995/
Part16 http://science6.2ch.net/test/read.cgi/denki/1252285807/
Part15 http://science6.2ch.net/test/read.cgi/denki/1247238097/
Part14 http://science6.2ch.net/test/read.cgi/denki/1239940189/
Part13 http://science6.2ch.net/test/read.cgi/denki/1231687664/
Part12 http://science6.2ch.net/test/read.cgi/denki/1223778551/
Part11 http://science6.2ch.net/test/read.cgi/denki/1212840469/
Part10 http://science6.2ch.net/test/read.cgi/denki/1203495784/
Part9 http://science6.2ch.net/test/read.cgi/denki/1192625746/
Part8 http://science6.2ch.net/test/read.cgi/denki/1177933605/
Part7 http://science6.2ch.net/test/read.cgi/denki/1162464623/
Part6 http://science4.2ch.net/test/read.cgi/denki/1148195387/
Part5 http://science4.2ch.net/test/read.cgi/denki/1125327648/
Part4 http://science3.2ch.net/test/read.cgi/denki/1108290187/
- 6 :
- >>5
part1、2、3は?
- 7 :
- これですか?
◎前スレ◎
AVR H8 etc. マイコン総合スレ Part3
http://science3.2ch.net/test/read.cgi/denki/1100706575/
AVR H8 etc. マイコン総合スレ Part2
http://science3.2ch.net/test/read.cgi/denki/1093023679/
AVR H8 etc. マイコン総合スレ
http://science3.2ch.net/test/read.cgi/denki/1078586301/
PIC AVR H8統合スレ
http://science2.2ch.net/test/read.cgi/denki/1072092201/
- 8 :
- こんな古いのリストしてもつまらんよ。いらん。
- 9 :
- 1981年発売のパソコンの未開封品を開けました(スライドショー)
http://www.youtube.com/watch?v=XSSl-OULfQc
1981年発売のパソコンの未開封品を開けました(動画)
http://www.youtube.com/watch?v=d3H3W3ARCuk
- 10 :
- ATTiny2313でPCと通信をやろうと思っています。
ATTiny2313側は以下のコードになっています。
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
// ボーレートの設定
unsigned int baud = (8000000/16/9600)-1;
UBRRH = (unsigned char)(baud>>8); //ボーレート上位
UBRRL = (unsigned char)baud; //ボーレート下位
UCSRA = 0b00000000;
UCSRB = 0b00011000; // 送受信機能(UART)使用
UCSRC = 0b00000110; // データ8bit
// stop 1bit
// パリティなし
// 非同期
while(1)
{
while(!(UCSRA & (1<<UDRE))){
}
UDR = 'A';
_delay_ms(200);
}
}
一方PCとはTera Termを使って、
受信したものを表示するようにしています。
しかし、↑のコードではTeraTerm側は何も表示されませんでした。
特に複雑なことはしていないのですが、コードに問題ありますでしょうか?
Tera Term側の設定は
Port: COM5(←合っています)
Baud rate: 9600
Data: 8bit
Parity: none
Stop: 1bit
Flow control: None
になっています。
- 11 :
- 回路はこんな感じです。
http://i.imgur.com/3S5YXsJ.jpg
- 12 :
- >>10,11
レベルコンバータは?
- 13 :
- 秋月の
http://akizukidenshi.com/catalog/g/gM-00720/
これを買って使ってます。
- 14 :
- 連投になってしまってすまない。
>>10,11
シリアル通信(RS-232C)は±12Vの負論理信号なので、ATTiny2313の内蔵シリアル出力をそのまま繋いでも通信出来ません。
http://www9.plala.or.jp/fsson/NewHP_elc/AVR/Avr_trsUSB232c.html
このページの一番最後にMAX232C(レベルコンバータ)を使った回路例があります。
このようにすればソフトに問題がない限り通信できると思います。
また、規格の融通する部分で手作業シリアル通信する場合はもっと回路を省略できますが、
まずは上記を試してからがよろしいと思います。
@変わったシリアル通信例
http://www.geocities.jp/leitz_house/electronics/rs232c_01.html
- 15 :
- >>13
連投中に返信が^^;
これはUSB-シリアル変換で、この出力は>>14で説明したようにRS-232C規格の出力になっています。
AVRのシリアル機能の出力はそのままではRS-232C規格とは合わないので、
レベルコンバータと言うICを使う必要があります。(14ではMAX232Cを使った例、他にも互換品があります)
マイコンの信号系(レベル)とRS-232C(シリアル)の信号系は違うので、変換(コンバート)する必要があるのです。
詳細は>>14のURL他、マイコン(Tiny2313に限ってもおk)のシリアル通信の作例が検索で一杯あります。
レベルコンバータを使わない例もありますが、まずはレベルコンバータを使用する回路を、一度試される事をお勧めします。
- 16 :
- >>14
なるほど・・・今、意味がわかりました。。。
マイコン側の0-5Vの規格から±12Vの規格に変えるために
AVRとPCの間にADM3202みたいなのを挟まないといけないということですね。。。
ありがとうございます。
うぅ、配送期間待ってたらまた土日が潰れてしまう。。。
- 17 :
- >>16
5vシリアルUSB
http://akizukidenshi.com/catalog/g/gM-05841/
ブレッドボードで実験するときは便利ですよ。
3.3vCPUのときは、
http://akizukidenshi.com/catalog/g/gM-05840/
- 18 :
- >>17
oh... ポチりました。
- 19 :
- こういう変換アダプタ使ったことないからわかんないが
RXDとTXDが逆な気がしないでもない
- 20 :
- 家にUSB MiniBケーブルが転がってるなら
http://akizukidenshi.com/catalog/g/gK-01977/
こっちのほうが安上がり
- 21 :
- 電圧レベルと正/負論理に注意。
論理が合っていれば、MCU側の出力が0〜5VでもPC側は受信できる。
- 22 :
- 追記
MAX232CPEなどのトランシーバICはレベルを変換し、論理を反転している。
- 23 :
- どうせならFT232HL買った方がいろいろ遊べて便利なのに
- 24 :
- >>20,23
すみません、さっきのやつをもうポチってしまいました。
>>19
RX/TXを逆にしても変わらなかったです。
>>21
電圧はマイコン側は5Vです。
正負論理とはどういうことでしょう?
0-5と、±12Vの論理のことでしょうか。
- 25 :
- >24
正論理=+の電位で1を表す
負論理=グランドや−の電位で1を表す
- 26 :
- >>24
12vのTxをマイコンのRxにつないだら壊れないか?
つなぐならマイコンからのTxだけにしとけよ。
送信だけなら動くかもしれないよ
- 27 :
- 何に繋がれるか判らないのは製品開発する時で、
用途が確定してるなら有り得ないケースは無視してよい
- 28 :
- コネクタハウジング内に収納できる、インターフェイスICを実装した基板を
秋月で売っています。
ttp://akizukidenshi.com/catalog/g/gK-06464/
私は手持ちの部品で自作しましたが、このような変換ケーブルが1本あれば、
「動作確認だけに、またはデバッグ時だけに使う。
通常は、または完成したら不用になる」
という場合に役に立ちます。
なお、完成品もあるようです。
ttp://www.ele-lab.com/8_261.html
- 29 :
- >>17が届くのは月曜日か火曜日なのですが・・・
それまでで出来る事なんかないかなぁと思い、
ATTiny2313が壊れてもいいや的発想で
引き続き繋げてみたりしてるのですが、
// UART受信用割り込み
ISR( USART_RX_vect ){
unsigned char x = 0;
x = UDR;
//if(x == 'a'){
PORTB = 0b00000001;
//}
while(!(UCSRA & 0b00100000));
UDR = x;
_delay_ms(100);
PORTB = 0b00000000;
}
何かを受信したらPB0が光るようにして、PC側のTeraTermを叩いてみました。
結果からいうと、TeraTermに合わせて光るようですが、
if(x=='a')で、aの時だけ光るようにした場合に、
aを押しても光りませんでした。
何かは来てるけど、aではない。
ということは、
・電圧が違うからちゃんと認識できていない
・ボーレートが違うからちゃんと認識できていない
あたりが考えられそうなのですが、前者の場合は>>17が届いたら解決すると思います。
後者の場合は、ATTinyのプログラムのミスになるのですが、
>>10が間違っている可能性はありますでしょうか?
例えばATTiny2313の出荷時のクロック周波数は8MHz?であってますか?
>>28
PC側のインタフェースがUSBなので、結局は>>17があれば事足りそうです。
ありがとうございます。
- 30 :
- >>29
8MHz だけど、 1/8 に設定されてるから実質 1MHz
- 31 :
- 8MHzで動かしたいんならヒューズビットを書き換えないと
- 32 :
- >>29 1/8分周されて1mHzになってない?
- 33 :
- >>30-32
ありがとうございます。
8MHzで動かしたいというわけではなく、ボーレート違うと通信できないので確認です。
ということは、>>10のプログラムの
// ボーレートの設定
unsigned int baud = (8000000/16/9600)-1;
の部分がそもそも間違っているということですね。
8000000ではなく、1000000に設定しないといけなかったようです。
これを直しても特に現状は変わらなかったので、
あとは>>17が届くのを待ってリトライしてみます。
ありがとうございます。
- 34 :
- 1MHzなら9600bpsは速すぎると思うよ
- 35 :
- >>33
avr-gccだとintが16bit。1000000(あるいは8000000)にUL付けたまえ。
…というか、データシートに早見表あるからそれ使った方が楽かも。
- 36 :
- 直結ならビットが反転したないんじゃね
- 37 :
- >>34-35
// ボーレート(2400)の設定
UBRRH = (unsigned char)(25>>8); //ボーレート上位
UBRRL = (unsigned char)25; //ボーレート下位
// (1000000/16/2400)-1 は 25
で設定して、PC側から受信したものをそのままPCに送り返すプログラムで
実験してみたら、PC側に反応がありました。
PC側から「abcde」と打つと、TeraTermに
Xl,vY
という反応がありました。文字は化けているようですが、
少し通信ができているようです。
文字化けの原因はよくわかりませんね・・・。
TeraTermの送受信の文字コードの設定はUTF-8にしてあります。
※それ以外の文字コードを設定しても文字化けは治りませんでした。
マイコン側のボーレートが微妙に違うんですかね・・・。うむむ。。。
- 38 :
- ん、内蔵RCオシレータだと誤差10%だっけかな。
- 39 :
- 校正しなくても低いボーレートなら通信できそうなもんだけどな
'U'(0x55)を送ってどう見えるか
- 40 :
- >>39
ちゃんと実際の周波数を計らないと誤差も増えるけどな
- 41 :
- 内臓RCは電源電圧で大きく変わるよ
- 42 :
- あとはTXポートが出力になってないとか
USART有効にした時点で出力になるんだっけか?
- 43 :
- 36の反転/非反転が通信できない原因だと思う。
だとしたら、今の君が論理を合わせるのは難しいだろうし(多分ね?)
MCUのピンに負電圧がかかるのはあまり好ましい事ではないだろうし(多分ね?)
AVR直結(TTLレベル)用USB変換ケーブルが届くのを待った方が良いのでは。
- 44 :
- そもそも校正無しの内蔵クロックではUARTの要求する精度が出ない。
基準クロックに誤差があるならボーレートを落としても誤差は変わらないので
9600bpsがだめなら300bpsにしたってだめ。水晶付けときな。
がむしゃらにならず、部品が届くまでRS232Cってなんなのかググって勉強したほうがいいよ。
- 45 :
- 下手にRS232C付いてたばっかりに
知恵遅れが右往左往w
- 46 :
- UARTはいずれ覚えた方がいいけどUSBに慣れた方が早い
- 47 :
- なんで校正なしとか条件を付けるの?
AVRは、工場出荷時に個別に10%未満になるように校正値が書き込まれている。
実際は生活温度内で5%位の誤差に収まっているから実験レベルなら通信できるよ。
ただ、ボーレート周波数を作るときの分周比は割りきれる値にしないと分周比誤差も加算される。
ボーレートを遅くすると分周比の誤差を少なくできるポイントがあるからあながち間違いではない。
- 48 :
- ボーレートから逆算した周波数になるようにosccalをtuneすればいいのよ
osccalのtuneで+−1%程度の精度で設定できる
電圧や温度をどう変化させても+−5%を越えてずれることはない お薦め
- 49 :
- >>47 >>48
ボーレートジェネレータの分周比いじったりosccal合わせたりって
それが「校正」だろ? 出来るような流れかい?
出来る人はいっぱいいるんだろうがネタ元の人はどうなんだろう?
出荷時に10%未満ってのは知ってるよ。
調歩同期通信って何%でアウトなんだよ?
「水晶付けとけ」が一番シンプルなアドバイスだと思ったがなぁ・・・
- 50 :
- 以前に、内臓RC発振器の特性(出荷時の周波数精度や温度、電圧変化分)が知りたくて、
tiny2313を10個ほどテストした事があるけど、全てRS232C通信が出来た。
<条件:8MHz、周波数の再調整無し、電源5V、9600ボー>
この特性でOKとするかどうかは人それぞれだと思う。(としか言いようが無い)
- 51 :
- 人それぞれだねぇ
俺は内蔵クロックで微妙に化けるのに当たったことが何度かある。
水晶付けるのが面倒なので覚悟の上でやったからいいんだが、
「初めてPCとシリアル通信します」ってな人にそんなハードル投げつけるってどうなのよって思う。
セルフキャリブレとかは、まともに通信できた次のステップじゃないかな?
- 52 :
- 水晶面倒ならせめてセラロックでも付けておけば
- 53 :
- 大抵水晶10個売りしかなくて22pFとセットで余らせてると思うw
- 54 :
- >>52
セラロック使うなら内蔵と精度変わらん
- 55 :
- >>54
いや、格段に違うだろ。
- 56 :
- キャラクタ長やストップビット長などにもよるが、ボーレートが計算
上で±3%を超えるあたりから、通信エラーが出始める。
送信側と受信側でクロック位相がぴったりとか、相手側が理論値の
ボーレートに対して誤差ゼロなんてことは、んあずありえないので、
発振器の周波数が誤差±10%なんてずれていたら、お話にならない。
たとえ水晶を使っても、ATカット品を使うのはもちろん、テキトーな
セラミックコンデンサではなく温度補償コンデンサを使ってカウンタ
でちゃんと公正しないと、刻印されたぴったりの周波数では発振
しない。
- 57 :
- もう、同期式にしたら?
- 58 :
- >>56
きっちりしないと気が済まないタイプ?
- 59 :
- まあ、プロ用途なら規格内にあわせるのは当然だが
大抵そういう環境ならppmレベルで校正された外部発振器だろ
- 60 :
- 通信はきっちりしろよ
- 61 :
- >>46
御意。
http://morosansoft.cocolog-nifty.com/blog/2007/10/usb_c264.html
- 62 :
- 無知なWeb屋がシャシャリ出てハード手掛けて炎上、あるでぃ脳。
10.000MHzと書かれた水晶でキッチリ10.000MHzで発振してくれれば
世話がない。自称ハッカー、ゆとり脳最強伝説。
単なる外付け(水晶+適当な位相補償コンデンサ)で、無調整のままだと公称値
(例:10MHz)に対して100kHz(1%)くらいズレているのはわりと普通。
Dallas Semiconみたいな発振回路内蔵タイプを使っているM/Bを除いて、
パソコン内蔵の時計(RTC)がすぐに狂うのも無調整だから。
やってみるとわかるが、トリマを外付けして周波数カウンタを繋いで追い
込むのも簡単ではない。実用はせいぜい有効数字で5桁くらいまで。しばらく
時間をおいて計ると、また少しずれている。
恒温槽内蔵ではない、外部発振の水晶モジュールでも±50ppm/℃〜±200
ppm/℃くらいの周囲温度による周波数変動がある。
- 63 :
- >>62 ラーメンタイマーに原子時計がいるとでもおもっているのかね?
- 64 :
- やぁ、ゆとり君。 ルビジウム発振器が、CDの原音再生に有効と思っている
オカルト君と友達になってはどうかね?
- 65 :
- >>62
ものすごい脳内水晶だな
本当に存在するの?
- 66 :
- 水晶メーカーのステマ
- 67 :
- ものすごい(特性悪い)脳内水晶だな、
なわけだが。
あるでぃ脳もゆとり脳も敵じゃないな、まさに最強。
データシート百遍読み直せ。
- 68 :
- >>62
でたらめ書くのもいい加減にしろよ。水晶で1%もずらせたら逆にすごい
技術だ。
- 69 :
- >100kHz(1%)くらいズレているのはわりと普通。
製品検査で今までに2千個くらいの水晶の発信周波数を調べてきたけど、
これはちょっと賛同できないし、ゆとりのない書き方にも賛同できません。
まぁ、そのなんだ、MCU内蔵RC発振器から恒温槽付き水晶発振器に変えようが、
調歩同期式から同期式に変えようが、通信エラーは発生するし、
アプリによってはチェック(CRCなど)、リカバー(再送など)が必須になる。
- 70 :
- 内蔵RCでUSBでの通信も可能だというのに
→ >>61
- 71 :
- ゆとり脳は、VXOとか知らんのかね?
- 72 :
- >>69
後半余分。
リトライとか知ってる俺スゲーってか (w
- 73 :
- >>61
横レスだが、これすごいな。
邪道なのはわかっているが、世の中にはすごい人がいるもんだ。
- 74 :
- >>61
横レスだが、これすごいな。
邪道なのはわかっているが、世の中にはすごい人がいるもんだ。
- 75 :
- マイコンのクロックの話にVXO持ち出すのもおかしいし、
周波数公差と周波数偏差が混じってるのもおかしい。
1%って1万ppmだがVXOではないマイコン用発信回路の負荷容量で
そこまで変えられないよね? 発信止まっちゃうよね?
VXOは公称周波数より低いところで動作するからそれとごっちゃにしちゃってるのかな。
- 76 :
- あちこちでホラふいて回ってる人だよ
- 77 :
- >37
ボーレートの違いはなく、スタートビットは 0 ストップビットは 1。
次の文字を送る前は 1 が連続するはずだが今回は4回連続するものとしたら…
PC から abcde と入力。LSB から送るということなので最初のビット列は
0-10000110-1111-0-01000110-1111-0-11000110-1111-0-00100110-1111-0-10100110-1111
ちなみに最初の 0- の部分がスタートビット。 -1111- がストップビットと連続した 1 の信号。
AVR は反転して受け取るので
1-01111001-0000-1-10111001-0000-1-00111001-0000-1-11011001-0000-1-01011001-0000
これを 0 が来たらスタートビットと認識し、ストップビットが来るまでの過剰の 0 は無視
するとすれば
1-0-11110010-000(ここ無視)-11-0-11100100-00-1-0-01110010-000-111-0-11001000-0-1-0-10110010-000...
11110010 'O', 11100100 'ESC', 01110010 'N', 11001000 'DC3', 10110010 'M' を認識して
送り返すと
0-11110010-1111-0-11100100-1111-0-01110010-1111-0-11001000-1111-0-10110010-1111...
これがまた反転するので
1-00001101-0000-1-00011011-0000-1-10001101-0000-1-00110111-0000-1-01001101-0000...
最初の 0 をスタートビットとして認識したら
1-0-00011010-000-1-0-00110110-000-11-0-00110100-00-1-0-01101110-000-1-0-10011010-000///
PC が帰って来たと認識する文字は
00011010 'X', 00110110 'l', 00110100 ',', 01101110 'v', 10011010 'Y'
反転してるけど通信で来てるかも。
- 78 :
- >>10の人ですが、色々と情報ありがとうございます。
そもそもの正負論理というか規格のところがあやふやな状態で、
色々と試行錯誤した結果をココで質問するのも申し訳ないと思い、
ひとまず>>17が届くまでは規格の勉強までに留めていました。
今日>>17が届いたので、仕事終わりに実験してみたら、
無事、問題なく動作しました。
クロック周波数も2400で合っていたようなので、
原因は5Vと±12Vのところですかね。
>>17のやつはメチャクチャ便利ですね!!
C言語のprintfデバッグみたいなのがAVRはできないので、
これを使ってシリアル通信で似たようなデバッグができそうです。
ともあれ、ようやく次に進めそうです。
ありがとうございました。
- 79 :
- >>57
クロックの分、配線が増えるけど、ボーレートだの考えなくていいし
取りこぼしとかなくなるから同期の方が断然便利だよな。
232なんてレガシーなものを使う意味が判らん。
- 80 :
- >>79
配線が増える?
そりゃ、増えるやつもあるけど...
- 81 :
- USARTの話してんだから同期式ならクロック線1本増えるじゃん
- 82 :
- > 原因は5Vと±12Vのところですかね。
だ か ら
21~77まで何人かが電圧レベル以前の問題で、論理が合っていない、
論理が合っていれば内蔵RC発振でも通信できる、と書いているよ。
ちゃんと読んだ? ま、いいけどさ、とりあえずオメ。
- 83 :
- >232なんてレガシーなものを使う意味が判らん。
残念だけど、機械制御などではいまだにRS232CやRS422/RS485が使われる事も多い。
だからサポートしているMCUも多い。
- 84 :
- 手頃な代替規格が無いし、PC環境でもUSB-シリアルブリッジで
実質は調歩同期通信使ってるしな。
それにPCのRS-232は同期通信が出来ないし。
- 85 :
- 電圧がバカ過ぎる以外特に不都合はないし
- 86 :
- http://elm-chan.org/docs/rs232c.html
- 87 :
- PROGMEMに記録させた文字列データを読み出したいんだけど、
#include <avr/pgmspace.h>
const char head_0[] PROGMEM = "test001,";
const char head_1[] PROGMEM = "test002,";
const char head_2[] PROGMEM = "test003,";
PGM_P head_table[] PROGMEM = {
head_0,
head_1,
head_2
};
char buf[10] = {};
while(1){
memset(buf, NULL, sizeof(buf));
strcpy_P(buf, (char*)pgm_read_byte(&(head_table[0]))); ←?
}
コンパイルは通るんだけど、いまいち文字がちゃんと書き込めてるのか、
そして読み込めているのか・・・
文字がうまく読み書きできていないせいか、正常に動かないんだす。
なんか前もstrcatで文字列繋げようとして、
何故かうまくつながらないことがあったんだけど、
AVRは文字列扱うのに適してないんかな。
- 88 :
- >>87
プログラム間違ってるだけ
AVRのせいにすんな
- 89 :
- >>87
ポインタはbyteじゃダメだよ
- 90 :
- >>89
あ、ごめんなさい。
貼り付けミスです。
最初はpgm_read_wordだったんですけど、
ここがアレなのかなぁと思ってbyteにしたままでした。
pgm_read_wordでも上手くいかない・・・
- 91 :
- だって、これでもNGなんだぜ・・・?
C言語だったらこれで問題なく動くのに・・・。
const char a[4]="aaa";
const char b[4]="bbb";
char c[7]={0};
memset(c, '\0', sizeof(c));
strcpy(c, a);
strcat(c, b);
- 92 :
- >>91
head_table の型がわかんね
strcpy_P(buf, &(head_table[0]));
- 93 :
- >>90 テーブルをコピーして楽しいかい?
- 94 :
- >>93
ん〜・・・、head_table[0]に格納されているのは、
char型のポインタの変数であるhead_0の、先頭のアドレスですよね。
それを引っ張り出して、strcpyの第2引数に持ってくれば、
コピーされるのは文字列なのでは?と思うのですが・・・。
それ以前にPROGMEMを使っていないのに>>91が上手くいかない時点で、
C言語から来た自分にとってはAVR意味不明すぎる・・・。
C言語使えるって聞いているのに!!!!
- 95 :
- 必要な情報が出てこないので
エスパー試験と化してます
- 96 :
- うーん、例えば
strcpy_P(buf, PSTR("test"));
でやってみると、普通に上手くいくから、
ROM上に書き込む時点で何かがおかしくなってるのかなぁ
- 97 :
- まじ分からんな・・・。
ここで聞いても答えがでないとなると、
もうどうしようもない。
- 98 :
- const char head_0[] PROGMEM = "test001,";
みたいな記述を関数の中でやるとうまく行かなくて
外に出したらうまくいったという成功体験
- 99 :
- >>98
ああああああああああああああざす!!!!!!!!!!!!!!!!!!!
解説サイトにそういう注釈つけて欲しい。
10個くらいのサイトを上から下まで全部読んでたのに
そんなこと一言も書いてなかったよ。
- 100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
初心者質問スレ その96 (340)
【MELSEC】シーケンサ・PLCラダー総合スレ 4台目【SYSMAC】 (756)
【MELSEC】シーケンサ・PLCラダー総合スレ 4台目【SYSMAC】 (756)
【な】秋月、千石、若松などを語るスレ48 (510)
LTSpice使います。いや、使いたい。 (287)
CQ出版総合スレッド 2冊目 (115)
--log9.info------------------
【ニューアルバム】オリジナル・ラブ【完成間近!】 (856)
堂珍嘉邦ソロ応援スレ36 (172)
遠藤正明part31 (174)
加藤和樹48 (779)
山崎まさよしの「タネをまくヒト」 (488)
【MOON】 佐々木収 Part9 【CHILD】 (517)
【リトルメロディ】七尾旅人 17【圏内の歌】 (113)
★ROLLY Part5★ (397)
家入レオ LEO IEIRI 014 (277)
♪宇多田ヒカル統一スレ・パート388♪ (453)
福原美穂 part7 (134)
【大躍進間近】May J.【無敗のカラオケ女王】Part.2 (433)
Superfly part56 (345)
【A Girl】松田聖子60【in the Wonder Land】 (135)
◆☆◆中森明菜◇★◇Part65 (160)
【全国LIVE】 倉木麻衣 part327 【 “RE:” 始動】 (158)
--log55.com------------------
なぜワタク叩きの大部分は僻みやっかみなのか?
楽に入れて高学歴で就職のいい大学ない?
名古屋大学ってどんなイメージ?
私立理工ランキング
お前ら色々議論してるけどさ、受験難易度は地底>早慶 就職は早慶>地底って結論出ただろ?
電気と情報が一緒になった学科クソすぎ
地底農学部vs地方国立獣医
どこの都道府県も国立>ワタクな訳だが