AVRマイコン総合スレ Part41
■ このスレッドは過去ログ倉庫に格納されています
>>185
なんで328を使わないの?
開発にかかるコストの差を、数十円のチップの価格差で取り戻す方が大変だと思うのだけどな。 一言ログと言っても恐らく日時情報は必要だからRTCや代替の手段が必要になるだろうし
そういうの諸々入れていくマージン考慮して選別しないと後悔するよ
ちなみにtiny2313はどう考えても無理、mega8なら余裕で入ると思う データロガー作ってSDに保存、RTCで時刻情報を取得して…とかいろいろやった。
その過程でChanさんのFatFsもプチの方もいろいろ試したりした。
けど、ESP8266で取ったデータをサーバーに送ることにしたら
そういうのが全部一挙に必要なくなってシンプルになてしまった。 >>190
> ちなみにtiny2313はどう考えても無理、mega8なら余裕で入ると思う
meta8でいけるかな?
328に浮気せず、8でガンガル(`・ω・´) 「ぷち」じゃない方のFatFSはR/W可能な最小構成プログラムが8.4KBとある。
どこまで削れるか頑張れ。 別に1ファイルでも先頭にファイルサイズでも入れて
自分でlseek()してread/writeしてやればいいだけじゃねぇの? ま、FatFS使うとRAMサイズが結構厳しいけどな chmateアップデート後に板の表示に待たされる様になったが、同じ人いる? >>195
> 自分でlseek()してread/writeしてやればいいだけじゃねぇの?
ぷちFatFSのlseek()はファイルサイズの変更に対応してない残念さ ずっと、PIC16,18を使っていて、力不足でpic32に行きたいけど、cc5x,cc8e で対応せず、
高価なxc8-pro が必要で、迷っていたら、avrgccが、結構使えそうなので、avrも使うことにしました。
avrのライター何がいいんでしょう?
pickit4 , avrisp ,atmel-ice
atmel-ice のデバッグ機能は重視してません。 力不足ってならarmとかに行けばいいのに何でこんな近場に・・・ デバッグ機能が要らんのなら作ればいい。
単なるライターは純正ではもう無い。
PICやってきたんなら小物の作成くらいできるんでしょ? >>201
XC32のフリー版じゃだめなの?
そもそも、cc5x,cc8eとか使ったことも無いんだが、
cc5x,cc8e>XC8フリー版
ということなの?
よろしければ向学のために教えてください。 https://www.t4f.org/articles/optimization-of-microchip-pic-xc8-compiler-in-free-and-pro-mode/
4年前の記事なので、現行は不明ですが、free版は増長なコードをはくようですね。
cc5x と avrgcc は、最適なコードをはきます。
cc5xは、算術ライブラリしかないので、不便なところも多々ありますが、
もう、20年近く使用しているので信頼感がありますね。 >>207
4年前の記事ですが、
個人ならフリー版使って5セント高いチップに換えた方が安上がり。
と結論していますね。
現状の私の見方と一致しています。
cc5xの方の客観的な比較記事は見つかりませんか?
あと、XC32の検討結果はいかがでしたか? >>208
現行の xc8 free だと、記事のとおりでした。
cc5x,cc8e は有料版使っていて、xc8よりも、半額以下ではありますが安いわけではないので、
特別優れているというつもりはないです。
ただ、avrは、gccがかなり使えそうな印象なので、好印象なんです。 >>209
私はただXC32を避ける積極的な理由があるのかを知りたいだけなんです。
スレチなのでもうやめます。
ありがとうございました。 パラレルライター+DOS窓
2000やXPならこれで十分 はまった。データシート読んだら書いてあった。がっくし。 私はライタもデバッガも自作
ライタは回路の影響を受けない完全なISP
デバッガはパッと起動しサクサク動く >>210
pic純正開発環境の MPLAB X が嫌いということが大きいですかね。
普段 visualStudioも使っているので、atmelStudioは、違和感がないということが大きいです。
あと、avrgcc はコマンドラインも使えますしね。、
GUIの統合開発環境は、便利ですが、どんどん進化?していくので、
成果物の管理まで考えると、開発環境は絞り込みたいのです。 お前らついに来る時が来た
MPLABIDEの最新版でAVR統合版が出てる
まぁ俺にとっては便利以外の何物でも無いのだがw Atmel Studio 7使いに何かいいことでもあるの? そうそう
Windows2000とavr-gcc、コマンドプロンプトだけで良い
エディタはVz
鱈セレ256MBメモリでも快適 >>220
256MBは贅沢だな
2000なら64MBでいける この板って、こういうサブイやりとりするやつが必ず3人はいるよね Future Product
mega808/809 mega1608/1609
Tiny1627 - USART x2 ADC 12bit 微妙な違いのバリエーション出してくるなあ
ニーズ探ってるんだろうか 下手な鉄砲も数撃ちゃ当たる?
何て言うかもっと根本的な改造をやって欲しい。 mega128のクロック上げて
PWMを861相当もしくはpll付きタイマーに変更して
usb128系相当のピン状態変化割り込みにして
mega64aと同じようにタイマー起動でのadcできる様にした
mega128bを作って欲しい 変なもの mega4809 Curiosity Nano $10 私が望むのは
レジスタセットのバンク化、BCD演算命令やマルチタスク用命令の追加、DMA機能など・・・
ただ一つだけしか望めないなら「オペランドの対象レジスタの制限の廃止」かな。
(たとえば<LDI Rd,K>でd=0〜31)
I/Oをいじくり回した「年寄りの厚化粧」CPUではなくて、
ベースを改良した「スッピン美人」CPUを望む。
なんて書いたけど、そんなAVRは実現しないと思って諦めている。 Microchipにアーキテクチャ改良出来る技術者は居ない
PICアーキも何年放置されてると思うか それも半分はxmegaで実現されてるけどやっぱりニーズ無いんだろうな 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と結びました。 >>242
AVRとその処理系は全く使ったこと無いけど普通はマウントしてからファイルオープンの手順じゃないの?
使ってるライブラリのサンプルコードもそうなってるようだし。。 >>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();
の順番でやってます。 >>244
サンプルでは
mount してから open してるように読めるけどな
243 の言う通り
もし 243 も書き間違い(コピペミス)だと言うなら向いてない >>244
いっ、いや・・そのコードも >>242 とmountとopenが同じ順番なんだけど。。。 再び同じコピペミスしました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();
の順番で動かしてます。 >>247
サンプルコードにはdelay関数を結構使ってるように見えるけど各ファイル処理の完了を待って次の処理に移る必要とかはないの?
各ファイル処理が完了してから戻ってくるんだったら関係ないけど。 まあなんでもそうだけど、サンプルがあるのだったら、まずは完全コピペでとにかく
うごく状態を作ることからはじめないと、何が悪いかわからないよ。
それから少しづつオリジナル化。 >>248
delay_1mTimes()はエラー発生時のみ実行されるから関係無いような気がします。
>>249
そうですね。
作者さんは "ATmega328P" で動作を確認しているみたいなので、まずは作者さんと同じ環境で動作確認した方が良いと思います。 オリジナルのサンプル回路を動かすべく週末に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Ωくらいにしたほうが良かったですかね? >>251
SDはFAT16でフォーマットしてるよね。 >>251
https://www.npyo.net/oboe/sd/sd.html
以前私が参考にさせて頂いたサイトですと全端子にプルアップ・ダウン抵抗が入っています。
以来、この構成でAVRとSDカードを接続していますが問題は発生してないです。
回路を見直してみた方が良いかもしれませんね。 >>252
microSDの容量は2GB。
PanasonicのSD Formatterを使ってフォーマットしたのでFAT16でフォーマットされてると思います。
>>253
あら、未使用ポートのDAT1, DAT2もプルアップされてるんですか・・・
念には念を入れて(CLKを除く)全ポートプルアップ抵抗入れておいた方がいいかもしれませんね。 空きポートにLED+抵抗を付けてopen,writeがちゃんと終わってるか表示させてみたら? >>255
sd_open関数までは成功していて
sd_write関数を実行すると負の値(失敗)が返ってくるところまでは確認しています。 クラスタサイズは?
windowsがつかえるなら
diskpart使って一度パーティションをクリアしてから
512MBくらいのプライマリパーティション作ってから
FAT16でフォーマットしてみるとか >>258
> クラスタサイズは?
DISKPART> filesystem
現在のファイル システム
種類 : FAT
アロケーション ユニット サイズ : 32K
クラスタサイズは32kなのでFAT16であってるかと思います。 SD_O_RDWRかSD_O_WRONLY付け忘れとかいうマヌケはないよな、さすがに >>259
どう実装しているかソース読んでないから
わからんけど、32kなんて巨大なクラスタ
サイズ扱えるのか? Arduinoのbootstrapを外付けEEPROMに書き込むのは出来るん?
AVR内蔵のFlash領域を節約したく ブートローダーの事かね?
AVRはフラッシュ領域以外からのコード実行はできないから無理 ブートローダーの事を言いたいんじゃないの
電々板でブートストラップって言うとハイサイドドライバのフローティング電源の変わりに付ける回路が出てくるが
ブートローダを有効にした時点でブートローダ領域がFLASH内に勝手に定義されるが
どんくらいの容量をブートローダ領域として割り当てるかは何パターンかから選べたはず…
でも現行UnoはOptibootが標準になってて最小容量になってるんだっけ?
あと外部ROMは無理 >>266
昔は「ブートストラップ・ローダー」(bootstrap loader)って言ってたな。
CP/Mの時代にメモリのゼロ番地からOSのフロッピーディスクの最初のセクターだけを読み込む小さなプログラムを書き込み、そのセクターにはOS全体を読み込むプログラムローダーが入っていてOSが起動する仕組み。(もちろん実用システムではBIOS ROMに入ってる)
これがブーツの紐(bootstrap)を自分で持ち上げて全身を空中に浮かべるようなイメージなので、この名前が付いたって何かの本で読んだ気がする。 足りないんじゃなくてどこまで節約できるのかやってみたいだけなんじゃ? ブートローダーを読み込むためのブートローダーローダーをだな・・・ そもそも>>265の言う通りATmega328Pのブートローダー領域は512B/1KB/2KB/4KBの4種類から選ぶ(ヒューズのBOOTSZ)しかない
ArduinoUnoのブートローダーはすでに最小容量設定の512Bに収まるように作られているし、ヒューズもそう設定されているはず
さらに容量の小さいブートローダーローダーを開発したとしても、空いた部分がプログラム領域として使えるようにはならんぞ
ArduinoNanoは前は2KBのブートローダー領域が必要なのが組み込まれてたが最近の変更で512Bになったんじゃなかったっけかな 未使用ポート(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にエラー番号を表示させてみますか このソース、かなり古いコンパイラ使ってない?
昔とグローバル変数の扱いとか変わってるから
大丈夫か?
一度、最適化を全部はずして試してみたら?
(以前、嵌った…) >>274
コンパイラの最適化は無しにしてみましたが相変わらずでした・・・
>>275
3.3Vの電源は三端子レギュレーターで作ってるんですが
その出力の近くに10uFの電解コンデンサを入れてます。
なのでSDカードの近くにはパスコンは入れてません。
でも入れた方がいいかもしれませんね。
SDカードは書き込み時に大電流流れると聞くので >>276
パスコン無しは論外
レギュレータ2次側のキャパシタはパスコンじゃなくて発振防止用
データシートを熟読して、安定領域に入るよう選択しないと、
トラブルの元(セラコン、ケミコン、タンタルコンのどれが
使用可能かまでレギュレータごとに指定されている)
パスコンは低ESRで自己共振がクロックより十分に高い物を
選択。一個で無理なら0.1,0.001uFパラとか。並べる時は
デバイスに近い順に自己共振周波数が高い物を… >>276
>なのでSDカードの近くにはパスコンは入れてません。
オイオイw
まさかと思うけどAVRのパスコンも省いていないよね?
今の症状だと100%同じ個所で止まっているようなのでパスコンの影響ではないかもしれないけど、、不安要素は極力排除したいね
全回路図を晒して皆さんに添削してもらった方が良いんじゃない? >>277
>>278
SDカードのパスコン外しは論外でしたか^^;)
幸いAVRの近くには0.1uFのセラコンいれてます・・・
0.1uと1uのチップセラコンが手元にあるのでそれを付けてみますね
> 全回路図を晒して皆さんに添削してもらった方が良いんじゃない?
いまの回路はUARTポートにUSBシリアルをつないでいたり
I2Cポートに温度センサがぶらさがってたりといささか汚れた状況なので
いちど
・AVR
・ISPポート
・microSDカード
だけのシンプルな回路を組んでみようと思います ISPコネクタにプログラマ挿しっぱなしとかじゃ無いよね? 似たようなことやって、似たようなトラブルで3日間無駄にしたよ…
昨夜にICSP差しっぱなしでSDカードが正しく動作しないと気づいたわ。
https://i.imgur.com/RZBLMAc.jpg
マイコンがATMEGA1284Pなんでちょっと違うけど、>>280さんの言う通りICSP差しっぱなしかどうか確認した方がいいかも。 >>282
なにこれ
下のmicroSDはmp3プレイヤーかな
上にもう二枚使ってるのは何だろう >>280
253で紹介したサイトでも「SDカードと同じSPIバス上には他のデバイスは接続しない方が良い」って書いてあるし
マサカねw
>>282
面白そうな物を作っていますね
これは何をする基板ですか? >>280
>>282
一応書き込みが終わるたびにコネクタは抜いてます。
microSDカードも書き込み中はちゃんとスロットから外してます^^;) >>287
空のファイルの作成には成功するんですが
そこから先の中身の書き込みに失敗してしまうようです。 ■ このスレッドは過去ログ倉庫に格納されています