X



トップページ電気・電子
1002コメント332KB
AVRマイコン総合スレ Part41
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2018/09/29(土) 13:25:04.41ID:NVU21ZtG
個人でも手軽に使えるAtmelのAVRマイクロプロセッサを中心に語るスレッドです

<公式サイト>
http://www.microchip.com/design-centers/8-bit/microchip-avr-mcus
・AVR Libc Reference Manual:
https://www.microchip.com/webdoc/avrlibcreferencemanual/install_tools_1install_avr_libc.html

<参考になるページ>
・AVRWiki: http://avrwiki.sourceforge.jp/cgi-bin/wiki.cgi?page=AVRWiki
・AVR情報多い-chanさんのpage: http://elm-chan.org/
・avrfreaks.net avrgccその他AVR関連の総本山(英語): http://www.avrfreaks.net/
・TAP-Config: http://ww2.tiki.ne.jp/~maro/
・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

前スレ
AVRマイコン総合スレ Part40
https://rio2016.5ch.net/test/read.cgi/denki/1517019258/
0220774ワット発電中さん
垢版 |
2018/10/26(金) 22:31:01.42ID:9eYd0Keg
そうそう
Windows2000とavr-gcc、コマンドプロンプトだけで良い
エディタはVz
鱈セレ256MBメモリでも快適
0228774ワット発電中さん
垢版 |
2018/10/30(火) 11:01:59.14ID:yXGe+geE
この板って、こういうサブイやりとりするやつが必ず3人はいるよね
0233774ワット発電中さん
垢版 |
2018/11/01(木) 12:56:33.28ID:jJqptFOI
微妙な違いのバリエーション出してくるなあ
ニーズ探ってるんだろうか
0235774ワット発電中さん
垢版 |
2018/11/01(木) 17:42:59.70ID:1vx2fJ0I
下手な鉄砲も数撃ちゃ当たる?

何て言うかもっと根本的な改造をやって欲しい。
0236774ワット発電中さん
垢版 |
2018/11/01(木) 17:48:02.59ID:VpImAwsd
mega128のクロック上げて
PWMを861相当もしくはpll付きタイマーに変更して
usb128系相当のピン状態変化割り込みにして
mega64aと同じようにタイマー起動でのadcできる様にした
mega128bを作って欲しい
0239774ワット発電中さん
垢版 |
2018/11/02(金) 16:40:53.14ID:LENfkMph
私が望むのは
 レジスタセットのバンク化、BCD演算命令やマルチタスク用命令の追加、DMA機能など・・・
 ただ一つだけしか望めないなら「オペランドの対象レジスタの制限の廃止」かな。
 (たとえば<LDI Rd,K>でd=0〜31)

I/Oをいじくり回した「年寄りの厚化粧」CPUではなくて、
ベースを改良した「スッピン美人」CPUを望む。
なんて書いたけど、そんなAVRは実現しないと思って諦めている。
0240774ワット発電中さん
垢版 |
2018/11/02(金) 16:53:30.31ID:DZ1WvS0A
Microchipにアーキテクチャ改良出来る技術者は居ない
PICアーキも何年放置されてると思うか
0241774ワット発電中さん
垢版 |
2018/11/02(金) 17:14:52.61ID:Edy+aJ+G
それも半分はxmegaで実現されてるけどやっぱりニーズ無いんだろうな
0242774ワット発電中さん
垢版 |
2018/11/03(土) 00:20:08.84ID:Bg9g6hKX
ATmega8でmicroSDを使うべく

Easy SDcard FAT Library for AVR
http://www.suzume-syako.jp/personal/Tips/peji/Easy_SDcard_FAT_Library_for_AVR.html

上記のライブラリを使わせてもらいました。

Atmel Studio 6.2で言われたとおりヘッダファイル・ソースファイルをADDし、
sd_config.hとdelay.hの修正・・・は必要なさそうだったのでそのままにしておき、

#include <avr/io.h>
#include "sd.h"
#define F_CPU 1000000UL
int main(void)
{
int fd;
char fname[] = "test.txt";
char buf[16] = "0123456789\r\n";

SD_SET_DATE(2010,7,7);
SD_SET_TIME(12,34,56);

fd = sd_open(fname, SD_O_CREAT|SD_O_APPEND, 0);
sd_mount(0);
sd_write(fd, buf, 12);
sd_close(fd);
sd_unmount();

return(0);
}

このようなテストプログラムを組んでみました。
早速実行してみたところmicroSDカードにtest.txtファイルは生成されるのですが
肝心の中身が空のままです。どうやら
sd_write(fd, buf, 12);
のところでエラー(0以下の値が返される)が発生しているようです。
ファイルの生成までは成功するけど書き込みに失敗する場合は
どのような問題があると考えられますか?

ちなみにmicroSDカードは複数試しましたが同じ結果でした。
またSDカードはSPI接続でAVRと結びました。
0243774ワット発電中さん
垢版 |
2018/11/03(土) 06:02:09.54ID:n2az8PSd
>>242
AVRとその処理系は全く使ったこと無いけど普通はマウントしてからファイルオープンの手順じゃないの?
使ってるライブラリのサンプルコードもそうなってるようだし。。
0244242
垢版 |
2018/11/03(土) 11:12:56.51ID:Bg9g6hKX
>>243
すみません、5chに投稿するときにコピペミスで順番がずれてしまいました。
実際のプログラムでは本家サイトの指示通り

fd = sd_open(fname, SD_O_CREAT|SD_O_APPEND, 0);
sd_mount(0);
sd_write(fd, buf, 12);
sd_close(fd);
sd_unmount();

の順番でやってます。
0245774ワット発電中さん
垢版 |
2018/11/03(土) 13:16:36.07ID:wwnJ94pW
>>244
サンプルでは
mount してから open してるように読めるけどな
243 の言う通り

もし 243 も書き間違い(コピペミス)だと言うなら向いてない
0247242
垢版 |
2018/11/03(土) 19:56:25.97ID:Bg9g6hKX
再び同じコピペミスしましたorz・・・

sd_mount(0);

SD_SET_DATE(2010,7,7);
SD_SET_TIME(12,34,56);

fd = sd_open(fname, SD_O_CREAT|SD_O_APPEND, 0);

char buf[16] = "0123456789\r\n";

sd_write(fd, buf, 12);

sd_close(fd);

sd_unmount();

の順番で動かしてます。
0248774ワット発電中さん
垢版 |
2018/11/04(日) 12:54:48.76ID:jvAELQeQ
>>247
サンプルコードにはdelay関数を結構使ってるように見えるけど各ファイル処理の完了を待って次の処理に移る必要とかはないの?
各ファイル処理が完了してから戻ってくるんだったら関係ないけど。
0249774ワット発電中さん
垢版 |
2018/11/04(日) 12:58:23.92ID:W9PE9GhB
まあなんでもそうだけど、サンプルがあるのだったら、まずは完全コピペでとにかく
うごく状態を作ることからはじめないと、何が悪いかわからないよ。
それから少しづつオリジナル化。
0250774ワット発電中さん
垢版 |
2018/11/04(日) 14:35:24.76ID:vJUA1vQP
>>248
delay_1mTimes()はエラー発生時のみ実行されるから関係無いような気がします。

>>249
そうですね。
作者さんは "ATmega328P" で動作を確認しているみたいなので、まずは作者さんと同じ環境で動作確認した方が良いと思います。
0251242
垢版 |
2018/11/04(日) 17:34:39.40ID:Q6NaYHcq
オリジナルのサンプル回路を動かすべく週末にATMega328P買ってきました

早速オリジナルのelfファイルを328Pに書き込んでみました
結果はmicroSDカードにtext.txtファイルは作成されましたが中身は空という
全く同じ状況になりました。

回路の配線でミスしたのでしょうか?

ちなみにmicroSDカードスロットアダプタは秋月で買ってきた
http://akizukidenshi.com/catalog/g/gK-05488/

それをAVRとSPIモードで接続しました。
参考にしたサイトは、http://www.robotsfx.com/robot/robohow/RoboHow91/RoboHow91.html
実際に組んだ回路は、https://dotup.org/uploda/dotup.org1683940.png
CLKのみ直結、CS, DI, DOは10kΩの抵抗で+3.3Vの電源にプルアップ。
未使用ポート(DAT1, DAT2)は未接続です。
AVRの内蔵プルアップは一切使ってません。

10kΩの抵抗値が少なすぎたんでしょうか・・・
47kΩくらいにしたほうが良かったですかね?
0253774ワット発電中さん
垢版 |
2018/11/04(日) 17:43:32.36ID:vJUA1vQP
>>251
https://www.npyo.net/oboe/sd/sd.html
以前私が参考にさせて頂いたサイトですと全端子にプルアップ・ダウン抵抗が入っています。
以来、この構成でAVRとSDカードを接続していますが問題は発生してないです。
回路を見直してみた方が良いかもしれませんね。
0254242
垢版 |
2018/11/04(日) 17:53:01.91ID:Q6NaYHcq
>>252
microSDの容量は2GB。
PanasonicのSD Formatterを使ってフォーマットしたのでFAT16でフォーマットされてると思います。

>>253
あら、未使用ポートのDAT1, DAT2もプルアップされてるんですか・・・
念には念を入れて(CLKを除く)全ポートプルアップ抵抗入れておいた方がいいかもしれませんね。
0255774ワット発電中さん
垢版 |
2018/11/04(日) 19:06:21.44ID:N2qrvJcb
空きポートにLED+抵抗を付けてopen,writeがちゃんと終わってるか表示させてみたら?
0256242
垢版 |
2018/11/04(日) 19:45:10.90ID:Q6NaYHcq
>>255
sd_open関数までは成功していて
sd_write関数を実行すると負の値(失敗)が返ってくるところまでは確認しています。
0258774ワット発電中さん
垢版 |
2018/11/04(日) 21:16:45.83ID:YVwstBqQ
クラスタサイズは?
windowsがつかえるなら
diskpart使って一度パーティションをクリアしてから
512MBくらいのプライマリパーティション作ってから
FAT16でフォーマットしてみるとか
0259242
垢版 |
2018/11/04(日) 22:23:38.14ID:Q6NaYHcq
>>258
> クラスタサイズは?

DISKPART> filesystem

現在のファイル システム

種類 : FAT
アロケーション ユニット サイズ : 32K

クラスタサイズは32kなのでFAT16であってるかと思います。
0260774ワット発電中さん
垢版 |
2018/11/04(日) 23:53:21.42ID:N2qrvJcb
SD_O_RDWRかSD_O_WRONLY付け忘れとかいうマヌケはないよな、さすがに
0261774ワット発電中さん
垢版 |
2018/11/05(月) 01:32:41.97ID:zWZuFTdR
>>259
どう実装しているかソース読んでないから
わからんけど、32kなんて巨大なクラスタ
サイズ扱えるのか?
0262774ワット発電中さん
垢版 |
2018/11/05(月) 09:01:18.76ID:8K0hdNr/
Arduinoのbootstrapを外付けEEPROMに書き込むのは出来るん?
AVR内蔵のFlash領域を節約したく
0264774ワット発電中さん
垢版 |
2018/11/05(月) 11:15:04.30ID:NcoUR1JJ
ブートローダーの事かね?
AVRはフラッシュ領域以外からのコード実行はできないから無理
0265774ワット発電中さん
垢版 |
2018/11/05(月) 12:05:56.36ID:we8VFUr/
ブートローダーの事を言いたいんじゃないの
電々板でブートストラップって言うとハイサイドドライバのフローティング電源の変わりに付ける回路が出てくるが

ブートローダを有効にした時点でブートローダ領域がFLASH内に勝手に定義されるが
どんくらいの容量をブートローダ領域として割り当てるかは何パターンかから選べたはず…
でも現行UnoはOptibootが標準になってて最小容量になってるんだっけ?

あと外部ROMは無理
0267774ワット発電中さん
垢版 |
2018/11/05(月) 14:44:34.55ID:KhCDKs37
>>266
昔は「ブートストラップ・ローダー」(bootstrap loader)って言ってたな。
CP/Mの時代にメモリのゼロ番地からOSのフロッピーディスクの最初のセクターだけを読み込む小さなプログラムを書き込み、そのセクターにはOS全体を読み込むプログラムローダーが入っていてOSが起動する仕組み。(もちろん実用システムではBIOS ROMに入ってる)
これがブーツの紐(bootstrap)を自分で持ち上げて全身を空中に浮かべるようなイメージなので、この名前が付いたって何かの本で読んだ気がする。
0269774ワット発電中さん
垢版 |
2018/11/05(月) 15:44:36.00ID:NcoUR1JJ
足りないんじゃなくてどこまで節約できるのかやってみたいだけなんじゃ?
0270774ワット発電中さん
垢版 |
2018/11/05(月) 16:12:45.49ID:1sJ44x4m
ブートローダーを読み込むためのブートローダーローダーをだな・・・
0271774ワット発電中さん
垢版 |
2018/11/05(月) 17:20:07.00ID:Hp/SynxC
そもそも>>265の言う通りATmega328Pのブートローダー領域は512B/1KB/2KB/4KBの4種類から選ぶ(ヒューズのBOOTSZ)しかない
ArduinoUnoのブートローダーはすでに最小容量設定の512Bに収まるように作られているし、ヒューズもそう設定されているはず
さらに容量の小さいブートローダーローダーを開発したとしても、空いた部分がプログラム領域として使えるようにはならんぞ

ArduinoNanoは前は2KBのブートローダー領域が必要なのが組み込まれてたが最近の変更で512Bになったんじゃなかったっけかな
0272242
垢版 |
2018/11/05(月) 20:28:09.65ID:hd05URoF
未使用ポート(DAT1, DAT2)も10kΩでプルアップしてみましたが相変わらず
ファイルの作成には成功しても中身の書き込みには失敗するようです。
自前のプログラム、サンプルプログラムどちらも同じです。

>>260
付属のサンプルプログラムが

fd = sd_open(fname, SD_O_CREAT|SD_O_APPEND, 0);

としてあったのでそっくりコピペしました。
ソースを眺めてみるとSD_O_RDWRやSD_O_WRONLYというオプションも用意されてるようですが
どういうシチュエーションで使うんでしょうか

>>261
2GBのSDカードだとFAT16のクラスタサイズは32kBになるようです。
http://www2s.biglobe.ne.jp/~system/doc/winfile.htm

>>257
> sd_errno

ソース見てたらなんかありますね、sd_errno。
エラーのステータスコードでも返されるんでしょうか?
UARTでつないでPCにエラー番号を表示させてみますか
0274774ワット発電中さん
垢版 |
2018/11/05(月) 20:46:35.19ID:CShwKbeS
このソース、かなり古いコンパイラ使ってない?
昔とグローバル変数の扱いとか変わってるから
大丈夫か?
一度、最適化を全部はずして試してみたら?
(以前、嵌った…)
0276242
垢版 |
2018/11/06(火) 00:08:34.51ID:w/FCkL3J
>>274
コンパイラの最適化は無しにしてみましたが相変わらずでした・・・

>>275
3.3Vの電源は三端子レギュレーターで作ってるんですが
その出力の近くに10uFの電解コンデンサを入れてます。
なのでSDカードの近くにはパスコンは入れてません。
でも入れた方がいいかもしれませんね。
SDカードは書き込み時に大電流流れると聞くので
0277774ワット発電中さん
垢版 |
2018/11/06(火) 01:22:44.51ID:5qqQrXCr
>>276
パスコン無しは論外

レギュレータ2次側のキャパシタはパスコンじゃなくて発振防止用
データシートを熟読して、安定領域に入るよう選択しないと、
トラブルの元(セラコン、ケミコン、タンタルコンのどれが
使用可能かまでレギュレータごとに指定されている)

パスコンは低ESRで自己共振がクロックより十分に高い物を
選択。一個で無理なら0.1,0.001uFパラとか。並べる時は
デバイスに近い順に自己共振周波数が高い物を…
0278774ワット発電中さん
垢版 |
2018/11/06(火) 06:42:17.74ID:srJWHmXs
>>276
>なのでSDカードの近くにはパスコンは入れてません。
オイオイw
まさかと思うけどAVRのパスコンも省いていないよね?
今の症状だと100%同じ個所で止まっているようなのでパスコンの影響ではないかもしれないけど、、不安要素は極力排除したいね
全回路図を晒して皆さんに添削してもらった方が良いんじゃない?
0279242
垢版 |
2018/11/06(火) 07:14:29.89ID:w/FCkL3J
>>277
>>278
SDカードのパスコン外しは論外でしたか^^;)
幸いAVRの近くには0.1uFのセラコンいれてます・・・
0.1uと1uのチップセラコンが手元にあるのでそれを付けてみますね

> 全回路図を晒して皆さんに添削してもらった方が良いんじゃない?

いまの回路はUARTポートにUSBシリアルをつないでいたり
I2Cポートに温度センサがぶらさがってたりといささか汚れた状況なので
いちど
・AVR
・ISPポート
・microSDカード
だけのシンプルな回路を組んでみようと思います
0282774ワット発電中さん
垢版 |
2018/11/06(火) 16:48:05.02ID:rAye+unJ
似たようなことやって、似たようなトラブルで3日間無駄にしたよ…
昨夜にICSP差しっぱなしでSDカードが正しく動作しないと気づいたわ。

https://i.imgur.com/RZBLMAc.jpg
マイコンがATMEGA1284Pなんでちょっと違うけど、>>280さんの言う通りICSP差しっぱなしかどうか確認した方がいいかも。
0283774ワット発電中さん
垢版 |
2018/11/06(火) 17:08:14.62ID:4kwMi3so
>>282
なにこれ
下のmicroSDはmp3プレイヤーかな
上にもう二枚使ってるのは何だろう
0284253
垢版 |
2018/11/06(火) 19:03:01.56ID:srJWHmXs
>>280
253で紹介したサイトでも「SDカードと同じSPIバス上には他のデバイスは接続しない方が良い」って書いてあるし
マサカねw

>>282
面白そうな物を作っていますね
これは何をする基板ですか?
0286242
垢版 |
2018/11/06(火) 20:26:27.36ID:w/FCkL3J
>>280
>>282
一応書き込みが終わるたびにコネクタは抜いてます。
microSDカードも書き込み中はちゃんとスロットから外してます^^;)
0288242
垢版 |
2018/11/07(水) 00:20:38.19ID:2Cws9u6C
>>287
空のファイルの作成には成功するんですが
そこから先の中身の書き込みに失敗してしまうようです。
0289774ワット発電中さん
垢版 |
2018/11/07(水) 06:13:33.03ID:JwDfvxHX
なんかサンプルと違うんでしょ? まったく同じもの作れって言ってるのに。
0290774ワット発電中さん
垢版 |
2018/11/07(水) 07:48:15.55ID:o3noaeiN
sd_write() がゼロ以下を返してくる原因が知りたいのか?
ソース付いてくるのになぜ読まないのか 最近の若いモンは… いやジジイかもしれんが

sd_write() の実体は sd_L3_write() だ
sd.h でそう define されている
返しているのはゼロで初期化している wd の値だ
それがゼロのままリターンする経路は見たらわかるな?
sd_errno にエラー値をセットしているのも見えるな?
0291774ワット発電中さん
垢版 |
2018/11/07(水) 08:06:07.47ID:o3noaeiN
ざっと見たけどこれ
オレなら使わない

そもそも sd_open() から怪しくないか?
ポインタ返してるのにサンプルはゼロ未満しかエラーにしてない
sd_L3_open() ではエラー時にゼロを返すようにしているっぽいが
sd_errno = SD_E* して break してる箇所では「ゼロ超」返すケースありそうな?
0292774ワット発電中さん
垢版 |
2018/11/07(水) 19:54:51.80ID:nRc9+mZv
>>288
mega328pの動作環境も有るのなら、FatFsが動作するか確認してみては?
問題がハードに有るのか、ソフトにあるのか見当が付くと思いますよ。
0293774ワット発電中さん
垢版 |
2018/11/07(水) 21:56:12.54ID:myGAIZfB
なんか昔、FatFsにAVRのローレベルデバドラ書いて
同じような症状が出た覚えがあるんだけど
どうしたんだったかな?
FatFs付属の奴と同じ感じに書き直した様な…??

まぁ良いや…
0294774ワット発電中さん
垢版 |
2018/11/08(木) 00:06:03.28ID:jqL1cyeE
avrで力不足で、16bit 、今時では、32bit系に行こうと思ったら、どのマイコンがオススメなんでしょう。
avrstudioの環境が無償なのに、なかなかよく出来ていて、
そんな都合の良い環境のものが、存在しているのかどうか知りたいです。
0298774ワット発電中さん
垢版 |
2018/11/08(木) 00:18:51.28ID:aoml9DDu
>>297
???
Atmel Studioが使いたいんじゃないの???
インストールするときに32bitAVRのチェックわざわざ外したの?
0300774ワット発電中さん
垢版 |
2018/11/08(木) 00:26:43.40ID:aoml9DDu
ちなみにだが
AVRにこだわりなければARMのCortex-Mシリーズもおすすめだから
どうせインストールしなおすならARMパッケージもいれとけよ
0301774ワット発電中さん
垢版 |
2018/11/08(木) 00:41:21.54ID:Ue77TVD9
AVRスレで堂々とCortexに誘導するとは
曲者だ!!出合え!出合え!
0303774ワット発電中さん
垢版 |
2018/11/08(木) 00:48:35.85ID:jqL1cyeE
>>300
凄いですね。ところで、avrstudioで使えるのは、元atmelの Coretex-Mだけですか?
0304774ワット発電中さん
垢版 |
2018/11/08(木) 00:50:25.88ID:v0V4WJGd
AVRは好きだけど…
これから32bit勉強したいって人にAVR32とARMでARM勧めるのは文句言わないよ俺…
0310774ワット発電中さん
垢版 |
2018/11/09(金) 18:29:34.35ID:m2sRRRqR
>>283
>>284
WS2812BのLEDを制御するコントローラーです。
SDカードにビットマップファイルを入れて、mp3プレイヤーの音楽を流しながら、LEDパネルとLEDテープを同時制御させようかと。
https://i.imgur.com/XQiYjmn.jpg

ATMEGA1284Pの16MHz駆動ですが、簡単にプログラム書いてみたら20fps位は出るので、まじめに書き直せば30fps位はなんとかなるかなーと期待してます。
https://i.imgur.com/x40Yur8.jpg

写真ってどうやって撮れば綺麗に写るんですかねぇ、発色がイマイチに見えて、どうすれば良いのやら…
0312774ワット発電中さん
垢版 |
2018/11/09(金) 21:32:41.54ID:45Yd2Tpz
>>310
LEDをそのまま写真にとると白っぽく映ってしまうのはあるある
スモークなどのフィルタを使うとかカメラの露出をかなり下げて撮るといいかも
赤や青の単色のLEDなら専用の濃い目の単色フィルタがかなりいいが、フルカラーは難しいかも
0313774ワット発電中さん
垢版 |
2018/11/09(金) 21:50:10.83ID:C7onjmwA
カメラって光りを出してるものは見た目通りにいかないからね。
目にはうす〜く光ってるくらいでちょうどいい。
0315774ワット発電中さん
垢版 |
2018/11/10(土) 23:41:38.25ID:dSE7UYtz
マニュアルレベル補正で
白いところを登録すると撮影時に結構落ち着くよ
最近までこの方法を知らなくて、室内で何撮影しても青くなるんで悩んでた
0316774ワット発電中さん
垢版 |
2018/11/12(月) 11:10:18.43ID:gVgRV+eV
丁寧で感動した

下に映ってる水色のカッターシートがダイソーなのは
わかる
0317774ワット発電中さん
垢版 |
2018/11/13(火) 17:58:13.74ID:LOgGCUbw
>>310
夜景モードでやってみるとか。
0318774ワット発電中さん
垢版 |
2018/11/13(火) 20:03:53.19ID:wNf4rbbM
ぽぷてぴぴっくわろたw
0319774ワット発電中さん
垢版 |
2018/11/13(火) 20:04:26.10ID:wNf4rbbM
>>315
それレベル補正じゃなくて ホワイトバランスじゃね?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況