ドラフトアクシデントアラート情報パネル(パート3)

すべてにご挨拶。

これは、かなり長い間描かれた物語の第3部( 1、2 )です。

現在、ほとんどすべてのメインブロックが組み立てられていますが、デバイスはまだ完成していません。

-インジケーター(2);

-プロセッサモジュール(この部分)。

-電源(パルスコンバーター48V-> 5Vから6A)(その過程で、オシロスコープ(kEtai)へのプローブが最終的に破損したために一時停止)。



アクションプラン:

[+] SDカードセクター

[+] FAT-FS

[+>] OneWire非同期

[-]スレーブファームウェア

[部]イーサネット

[-]プロセッサ間の通信プロトコル

[-]ブートローダー



注意写真。





プロセッサボードに変更が加えられました。

非表示のテキスト
V.1:



解体し、次へ移しました。

V.2:







最初のバージョンでは、メインコントローラーのPORTAの繁殖に失敗しました;バージョン2では修正されました-完全な櫛に置かれました。 追加の周辺機器とDACの役割の両方を使用することができます(UDPパケットからサウンドを取得して、障害なく動作させることができる場合)。

周辺はモジュール式です。 ボード上で提供:

-温度センサーDS18B20(またはその他のOneWireデバイス);

-DS1307をご覧ください。

-ハードウェアコンソール(TTLレベル、115200、N、1);

-ピエゾエミッター(ツイーター、コネクター);

-ステータスモジュール(プラグイン);

モジュールのタイプ:ダイオードが「隣人」を照らさないように、ミニウィンドウを作成するとよいでしょう。

非表示のテキスト






スクリーンコントロールプロセッサは、電力を追加せずに外部インジケータ(時間、時計のみ)を接続するための追加のコネクタを取得しました-PSUから直接取得します。



コードはまだ完全には組み立てられていません。 ハードウェアに従事(現在-指標:

非表示のテキスト






ダイナミック表示、トランジスタ上の行および列ドライバー、各行のデューティサイクル8。 ボードのスキームとモデルは後日なります。



FAT:部分ベース-「 www.roland-riegel.de 」( ライブラリページ )からのライブラリの使用。 自分で書きたいので、GPLの下で配布されているファイルを例として使用します。

奇跡的に、SDカードからの読み取り/書き込み/ SDカードへの書き込み機能が機能しました。 初期化は正常で、カードは検出されますが、読み取り時にゼロが返されます。 セクターの読み取り/書き込みを要求すると、奇妙な松葉杖が現れました-絶対アドレスに定数を追加する必要があります。 通常のカードの場合、式はCalculatedAddress =(Required_Sector + 249)* 512です。SDHCの場合、2048を追加する必要があります。

非表示のテキスト
uint8_t SPI_SD_READ_SECTOR(uint32_t Sector) { uint16_t i; uint32_t calc_Addr; if (Sector == raw_block_buffered) //        { return R_OK; //  .    ,    . }; SPI_Select_CARD(); if (!(sd_raw_card_type & (1 << SD_RAW_SPEC_SDHC))) //     SDHC -  9   . { // !SDHC calc_Addr = ((Sector+249) << 9); // DaFaq?! But will not work in other case. } else { // SDHC calc_Addr = (Sector+2048); // And one more DAFAQ! }; i = SPI_SD_SendCMD(CMD_READ_SINGLE_BLOCK, calc_Addr); //     if(i) { SPI_UnSelect_CARD(); //   return R_ERR; //  . =( }; while (SPI_SD_Rd_Byte() != 0xFE); //   .    30-40 . for (i=0; i<512; i++) //        (512 ) { raw_block[i] = SPI_SD_Rd_Byte(); }; SPI_SD_Rd_Byte(); // CRC SPI_SD_Rd_Byte(); // CRC (2) // IGNORED T_T /* deaddress card */ SPI_UnSelect_CARD(); //   () SPI_SD_Rd_Byte(); // . raw_block_buffered = Sector; //  ,  . return R_OK; };
      
      





テスト済みのカード:

Transcend MicroSD 1GB /台湾/(I C1210000 924)

Transcend MicroSD 2GB /台湾/(8281AB 2G 01DS1)

Samsung MicroSDHC 8GB Class 2 /台湾/(C FJCB85PZ T15)

Kingston MicroSCHC 16GBクラス10 /台湾/(TM2I121100200)



気づいたカードの奇妙な動作が再現されます。



読者への質問: SDカードでAVR *を使用する際に同様の経験がありますか?



イーサネットモジュールに問題がありました-モジュール自体は動作しますが、アクティブなPoE電源でネットワークに接続することはできません。 Arduino互換イーサネットモジュールで使用されるトランスのデータシートへの直接リンク -それらでは、4ペアのミッドポイントすべてが75オームの抵抗器によって回路内の共通ポイントにプルアップされます(これらはリニアターミネータであることが論理的です)。 この接続では、2つのオプションしか使用できません-PSUが防御状態になるか、コンセントが切れます。 どちらも不快です。

現在、イーサネットボードを作成しています(実際、購入したArduino-ENC28J60モジュールを新しいボードにやり直しています)。 モジュールは71 * 33mmでした(比較のため、Arduinoのモジュールは55 * 35mmです)。

非表示のテキスト
説明からモジュールまでの典型的なスキーム。



離婚した回路基板(オフィスバスケットにあるいくつかのデバイスの変圧器、M-TEK G24102MKGは非常に貧弱なグーグルです)。



ボードアセンブリ。 トランスが壊れていました。 しかし、なぜなら 破棄されたドナーデバイスでは、最初のペアのみが使用され、そのようにして獲得されました。





ボードは、メッキ層、隣接する層のジャンパーなしで作られています。



最近、OneWireの非同期ライブラリは多かれ少なかれデバッグされています。 完全に終了するまで、インターフェースなどは存在せず、所定のバイト数を読み取ります。 作業を簡単にするために、いくつかのオブジェクトをやり直す必要があります。



All Articles