2011年12月29日木曜日

STM8Sの不揮発性データ書き込みのサンプルプログラムをup

音泉のバカテスで原田がしゃべっていたんですが、スマートホンとはコミケで売られている薄い本のことなんですね.ほほぅ. ------コミケの季節ですね.自分でも意外なことに、わたしはコミケに行ったことがないのです.

明後日あたりに、「けいおん」の映画を見に行こうかと思っています.わたしは音楽フリークじゃないので「けいおん」にはそれほど感動してない人です.

それに比べると「げんしけん」は切なくて切なくて観るのが痛かった.あれに描かれているのは自分の学生時代そのものというくらいダブるんだもん.ちなみに、わたしはマン研とアニメ研でした.

2011のアニメ総括をしなくちゃいかんなぁ.....トリプルHのCDが出たそうで、買いたいな.

----
STM8Sのページに、不揮発性データの利用法をupしました.

これはとても重要な機能なので早期にupしたかったのですが、ダラダラしていて遅くなりました.

STM8Sの使い方としては、だいたいこれで全部網羅し終えた気がしています.

他の機能には、ウォッチドッグタイマとか、SPI制御のDACとかもありますけど、重箱の隅ってかんじがして熱意が低いです.要望があれば考えますが...

STM8SでFATを書くのはぜひやり遂げたいです.
DACを接続して.wavを再生するのもおもしろそう.

それはそうとして、来年はSTM32-DISCOVERYの技術解説ページを立ち上げたいと思います.

27 件のコメント:

  1. ディスクトップの方は何か欠陥が有って、どうしてもST-Linkだ接続できません。
    こちらは諦めてノートの方で書き込みできるようにUSB-Linkケーブルを買いました。

    いくつかの方針で判らない所があります、順番に質問しても良いでしょうか?
    それでは宜しくお願いします。

    返信削除
  2. あけましておめでとうございます.わからないことがありましたらどうぞ.では.

    返信削除
  3. 明けましておめでとう御座います。
    遅れまして済みません。
    さて、ADCで3chを使用することにしました。
    リファレンス、センシング1、センシング2です。
    説明書を読んでいますと、ADCクロックは5vで5MHz
    の様に書いてあったんですが、20MHzでも使えますでしょうか?、

    センシングの比較(コンパレータ代わりの場合)アナログウオッチドックを使った場合と使わない差は何になるのでしょうか?
    ちなみに1,2chを主体に比較に使いたいです。

    返信削除
  4. 実地使用に「STM8SマイコンSTM8S105K4B6」を少し購入しました。
    (足の配置が変わっているので、斜めに実装しないと取り付きませんでした)
    PICにもADC付きはあるのですが18Fクラスでないと使いにくく感じていました。

    返信削除
  5. ADC clkは、最高でfCPU/8ですので、2MHzが上限になると思っています.しかも1サンプルに14clockかかります.ゆえに143kSample/Secが上限.これがデータシートから読めることです.
    20MHzで動くかどうかは、外部から20MHzを突っ込むことになりますが、20MHzでも動くかもしれません.PCのclock-upみたいなもんで、高clock耐性がありますから.しかし外部20MHzにしても、上の理由でADCのサンプリングが20MHzになることはあり得ません.

    アナログウォッチドッグを使うメリットは、CPUが計算で多忙であっても、hardwareで監視してくれるので、待ったナシの警告をしてくれるのがメリットです.

    STM8S105K4って1.27mmピッチのDIPタイプの奴でしたかな?手作りには便利ですね.

    返信削除
  6. >1.27mmピッチのDIPタイプ
    1.127なんで2.54に斜めに入れるしかできませんでした。

    返信削除
  7. 秋月に1.27mmピッチのユニバーサル基板が売られていますが、かといってそれで周辺パーツをハンダづけできるかというと案外難しいもんです.素直に1.27→2.54変換基板を使わないといけないかもですね.

    返信削除
  8. 1.127なんで変換基板がありません。
    仕方なく斜めに入れるときっちり収まりますが引き出し線が結構複雑です。
    (2列ピンヘッダに出す場合、1列ピンヘッダでは面積の割に何も付けられないのでこれも振りです)

    もう一台のノートではSTM32_Linkが動作するのでUSBメモリで移動させながらテストしたりしました、
    結構手間なのでUSB_Link ケーブルを使うと、デスクトップ人繋いでいたNASがダウンしてしまい、そちらの調整に追われれています。
    説明書って読んでも判りにくいいのですが、自分の書いた分を読んだ人もやはり判りにくいのだろうと、怒ったり反省したりです。

    返信削除
  9. こんばんは
    クロックの設定を内部16MHzにして、1/4(3chで約100K)にするには、
    CLK_ClockSwitchConfig ( CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE );

    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV4);
    と2行に書きますのでしょうか?
    それでは宜しくお願いします。

    履歴が重く成りすぎて、大部消しましたらプロフィールが判らなくなりました。
    取りあえずgoogleでやってみます。

    返信削除
  10. おはようございます.結論を書きますと、次の3行になるはずです.HSIというのが内部16MHzを意味しています.HSIDIV4というのが16/4=4MHzをADCに供給する意味になります.CPUDIV1はここでは4MHzをCPUに供給する意味になります.では.
    CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
    CLK_HSIPrescalerConfig( CLK_PRESCALER_HSIDIV4 );
    CLK_SYSCLKConfig( CLK_PRESCALER_CPUDIV1 );

    返信削除
  11. こんにちは
    内部クロックとADCクロックの説明有り難うございます。

    いつもしくじってしまうのは、
    C言語について或いはプロジェクトの成り立ちについて無知であるためです。

    >解説編new Raisonance Cコンパイラ対応  実例01
    の様に環境を整えた積ですが、「STM8S105K4B6」でも内容を変えずに出来ますでしょうか?

    取りあえずは拙のページに「STM8S105K4B6」の調べた事柄を羅列しました。

    今回仕切り直しで「 実例31(ADC clock 1~4MHz制限に準拠して訂正 2012.1.21)」の分を読み込みました。
    これを上記目的に従って 0~2chのADCを行い終わったら、割り込みでADスキャン再起動を掛けて、値の読み込みへと繋ぎたいと思います。

    次の(まだ書いていません)ページで、上記ののソースを書いてみたいと思います。
    お築きのテンガ御座いましたら、添削をお願い致します。
    或いはこちらのコメントだけでやっていった方がよいでしょうか?
    それでは宜しくお願いします。

    返信削除
  12. できそうな予感はありますのでちょっとトライしてみます.しかしhardwareの現物がないので、ビルドが通るかどうかまでしか当方では確認できませんが.

    返信削除
  13. STM8S105K4B6でコンパイルは通りました.下記に置きますのでお試しください.
    https://box.yahoo.co.jp/guest/viewer?sid=box-l-4nu4tb23kmjpyr6yxusmkeywoe-1001&uniqid=24c616c8-ebaf-4c41-8491-97a8f04c0e5a&viewtype=detail

    返信削除
  14. グーグルのアカウントが調子が悪いので、他のに換えてみます。
    猫村

    返信削除
  15. 有り難うございます。
    ソースをダウンロードできました。

    展開致しますと、「●Directoryタブにライブラリフォルダを追加します」と
    パターンが違ってしまい、戸惑っています。

    これらの規則は覚え方がありますでしょうか?

    返信削除
  16. そうかもしれませんが、とりあえず、ダウンロードして解凍したそのまんまで、xprod01.stwをダブルクリックするだけでSTVDのprojectが立ち上がると思います.そしたらすぐにビルドできるはずなのですがいかがかと.

    返信削除
  17. こんばんは、
    有り難うございます。
    元のファイルではエラーが出ます。
    (その関連画像をUPしました)
    無くなるまで .h を足しますと、出なくなったんですが、
    debugホルダには .lst と .o が出来ていました。
    何かの設定でこれを抑制できますと、
    元のままでもエラーは出ないと思われます。
    それでは宜しくお願いします。

    返信削除
  18. 画像をupしたと思われるURLを見に行きましたが、それっぽい画像はみつかりませんでした.URLが間違っていると思いますので、なんらかの方法でURLをお知らせいただけるとなにか判るかもしれません.では.

    返信削除
  19. 内容を少し変えてUPし直しました。
    http://den-nekonoko.blog.so-net.ne.jp/2012-01-22
    どうも判り難い内容になっていると思うんですが、
    ちょっとの間見ていませんでした。
    いまは切り取ったエミュレータの接続試験をしていた所です。

    返信削除
  20. 原因はたぶんわかりました.エラーがでるコマンドラインを子細に見ますと、次の2つのライブラリフォルダを指定していることがわかります.エラーが出る理由は、これらのフォルダにライブラリファイルがなぜか存在しないんじゃないかと思われます.

    ●C:\_stm8\users\kj\Work\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6\STM8S_StdPeriph_Lib_V2.0.0\Libraries\STM8S_StdPeriph_Driver\inc

    ●C:\_stm8\users\kj\Work\xprod01-TEMPERATURE-LOGGER-STM8S105K4B6\xprod01-TEMPERATURE-LOGGER

    どうやってなおせばいいか?
    http://hrp.pa.land.to/STM8S_datasheet/index.html こちらのページに、トラブルシュートを追記しました.「ヘッダファイル.hが見つかりません系のビルドエラーがダーッと出るとき」というタイトルがありますので、そこに着眼して試してみてください.

    返信削除
  21. こんにちは
    有り難うございます。
    ホルダパスの考えは色々なスタイルがありますが、
    拙の場合はc:\直下に 「_mpu名」と言うスタイルでMPUごとにホルダを作っていました。(_xx は一番始めに来るので見つけやすい)
    C:を取り替えることもあるので D:\にしたり Raidm1という(1ドライブのRAID1)中に作ったりしていました。
    (これはNTFSなので少し心配 と言ってFAT32 が安心というわけでもありません、
    ポリシーがフラフラしていて済みません)

    ですからプログラムそのものをd:\とかに入れ、
    d:\users\stm8s\STM8S_StdPeriph_Lib_V2.0.0・・と換えていこうと思いますが、
    d:\でも動作するか確認してみます。

    またどこかに「kinko」と言うホルダを作って其所に大事と思うものをコピーしたりとしています。

    XP2を使っていまして、不都合が出だしたので、お引っ越しを予定していますが、
    これでも悩んでいます。
    (話題以外を長々と書いて済みません)

    返信削除
  22. こんにちは
    有り難うございます。
    ホルダパスの考えは色々なスタイルがありますが、
    拙の場合はc:\直下に 「_mpu名」と言うスタイルでMPUごとにホルダを作っていました。(_xx は一番始めに来るので見つけやすい)
    「C:」を取り替えることもあるので 「D:\」にしたり Raidm1という(1ドライブのRAID1)中に作ったりしていました。
    (これはNTFSなので少し心配 と言ってFAT32 が安心というわけでもありません、
    ポリシーがフラフラしていて済みません)

    ですからプログラムそのものをd:\とかに入れ、
    「d:\_users\stm8s\STM8S_StdPeriph_Lib_V2.0.0・・」と換えていこうと思いますが、
    「d:\」でも動作するか確認してみます。

    またどこかに「kinko」と言うホルダを作って其所に大事と思うものをコピーしたりとしています。

    XP2を使っていまして、不都合が出だしたので、お引っ越しを予定していますが、
    これでも悩んでいます。
    (話題以外を長々と書いて済みません)

    返信削除
  23. それと、ご自分で好きなフォルダに展開してらっしゃるようですけど、ライブラリフォルダの再設定をしくじっているっていうことは、知識がないのに独自にいじりすぎてハマってるってことなので、まずは、わたしの指示どおりそのまんまでまずは作業された方がいいんじゃないかと思いますがいかがでしょうか?

    返信削除
  24. 済みませんでした。
    >わたしの指示どおりそのまんまで
    それでやってみます。

    それとプログラム類をc:\ を d:\ に換えて入れるのはダメでしょうか?

    返信削除
  25. そうですねえ.c:とd:を入れ替えるのも扱いに慣れてきたらにしたらいいんじゃないですかね? では.

    返信削除
  26. プログラム位置(ドライブ)が悪いのかも知れません。
    データホルダは何処でも同じ結果になります。
    それとSTのスタンダードペリフェラルライブラリーには「stm8s_conf.h」
    が抜けているようで加えますと、(5,6,8kの3種類があって6k以外は動きました)

    *** ERROR C014 IN LINE 89 OF usrlib-uart.c : Undefined 'UART2_IT_RXNE'
    *** WARNING C090 IN LINE 93 OF usrlib-uart.c : Call to function 'UART2_ReceiveData8' without prototype

    どれもプロトタイプはデファインが違うと書いてあるのでしょうか?
    PCが悪いかも知れないので明日ノートでもやってみます。
    画像などもまとめたのですがチョット違うので書き直しています。

    返信削除
  27. ディスクトップでも(xp2)何処に置いてもノーエラーになるようになりました。
    しかしまだ、何処がエラーとの分かれ目になるの可を探っています。
    (プロジェクトを増やしていった場合の置き場所確保のため)
    まずはご報告まで、

    進展しましたらもっとご報告致します。
    (現在は予定のないデバッグ情報らしきのがずらっと付いてきます)
    それでは有り難うございました。

    返信削除