投稿者
 メール
  題名
  内容 入力補助動画検索画像・ファイル<IMG><OBJECT>タグが利用可能です。(詳細)
    
  ファイル1
  ファイル2
  ファイル3
アップロード可能な形式(各1MB以内):
画像(gif,png,jpg,bmp) 音楽(mmf,mld) 動画(amc,3gp,3g2)

 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ teacup.>アマチュア無線 ] [ 検索 ]

[PR]     銀座 インプラント
teacup. ] [ 無料掲示板 ] [ プレミアム掲示板 ] [ teacup.コミュニティ ] [ ブログ ] [ チャット ]

全251件の内、新着の記事から10件ずつ表示します。 1  2  3  4  5  6  7  8  9  10  |  《前のページ |  次のページ》 

Re: C18コンパイラでintを使用して・・

 投稿者:nekosan  投稿日:2009年11月30日(月)23時39分7秒
返信・引用
  > No.252[元記事へ]

あいこさんへのお返事です。

> nekosanさんへのお返事です。
>
> > (追伸:何かわかったら是非教えてください)
>
> nekosan様
>
> ご教示いただきしたURL内記述の"プロジェクトのビルドオプションのC18のGeneral部分で格上げを有効に"を実施しましたところ、思ったような値になりました。
> おかげさまでおもうような動作とすることができました
> ありがとうございました。

なにやら解決ができたようでおめでとうございます。
特に手助けらしいことは何もできませんでしたが…

そうですか。「格上げを有効」っていう設定で普通の
C言語と同じ扱いになるんですね。(そこまで細かく
読んでませんでした…)

ありがとうございます。
 

Re: C18コンパイラでintを使用して・・

 投稿者:あいこ  投稿日:2009年11月30日(月)12時58分51秒
返信・引用
  > No.250[元記事へ]

nekosanさんへのお返事です。

> (追伸:何かわかったら是非教えてください)

nekosan様

ご教示いただきしたURL内記述の"プロジェクトのビルドオプションのC18のGeneral部分で格上げを有効に"を実施しましたところ、思ったような値になりました。
おかげさまでおもうような動作とすることができました
ありがとうございました。
 

Re: C18コンパイラでintを使用して・・

 投稿者:あいこ  投稿日:2009年11月30日(月)12時09分8秒
返信・引用
  > No.250[元記事へ]

nekosanさんへのお返事です。

> (1)SwNumという変数は何型でしょうか?

> (2)65408という数値はどこから取り出したか?
>

nekosan様、ご回答いただきましてありがとうございます。
以下のようにご報告いたします

(1)はunsined char, unsigned int ともに確認しても同じ結果でした。
   unsigned charはintにタイプ変換しています

(2)はLCDを取り付けています。PCからUSB経由でSwNumの値を設定します。
  LCDで順次、値を確認しました。

ご教示いただきましたURLの内容をはじめて知りました。
私のやっていることが記述内容、そのままのように取れます。
私なりに回避方法を探してみます。なにか、ご助言ありました御願いします
 

Re: C18コンパイラでintを使用して・・

 投稿者:nekosan  投稿日:2009年11月27日(金)22時39分43秒
返信・引用 編集済
  > No.249[元記事へ]

あいこさんへのお返事です。

> こんにちわ。P18F2550をはじめました。C18コンパイラを使ってプログラムを以下のように作成しました
> unsigned int Sw[16];
> <中略>
> SwNum=7;
> Sw[0]=(1<<SwNum);
> としたとき、Sw[0]=65408という結果になってしまいました。
> (本当はSw[0]=128がほしかったんですけど・・・・)
> これってなにが、間違えなのでしょうか?
> どなたか、ご教示ください。

あいこさんこんにちは。

なんだか不思議な処理結果ですね…

65408は16進では0xff80なので、どうやら下位8ビット
だけは一応計算が出来ているみたいに見えます。
C18のint型(もしくはunsigned int型)は多分2バイト幅
の変数だと思いますが、気になるページがありました。

http://www.microfan.jp/mplab-c18
C18では8ビット幅の変数で演算を行うと、内部ではそのまま
8ビットとして扱われるとのことなので、シフト処理などで
おかしくなることがあるという主旨だと思われます。


で、幾つかご確認を。


(1)SwNumという変数は何型でしょうか?

 →上記のリンクを見ると、もしchar型等の8ビット幅
  変数だとすると内部計算が8ビット幅で行われる
  ことになり、計算結果がおかしくなる恐れがあるかも

(2)65408という数値はどこから取り出したか?

 →ソフトウェアシミュレータの実行結果?
  それともICDの実行結果?
  それともシリアルコンソールなどに吐き出した結果?

  どこから得た数値なのかによって、そもそもその
  65408という数値自体の信憑性を疑ってみる必要
  もあるかもしれません


思いつくのはひとまずそのあたりです。

(追伸:何かわかったら是非教えてください)
 

C18コンパイラでintを使用して・・

 投稿者:あいこ  投稿日:2009年11月27日(金)18時54分46秒
返信・引用
  こんにちわ。P18F2550をはじめました。C18コンパイラを使ってプログラムを以下のように作成しました
unsigned int Sw[16];
<中略>
SwNum=7;
Sw[0]=(1<<SwNum);
としたとき、Sw[0]=65408という結果になってしまいました。
(本当はSw[0]=128がほしかったんですけど・・・・)
これってなにが、間違えなのでしょうか?
どなたか、ご教示ください。
 

C18コンパイラでintを使用して・・

 投稿者:あいこ  投稿日:2009年11月27日(金)15時19分37秒
返信・引用
  こんにちわ。P18F2550をはじめました。C18コンパイラを使ってプログラムを以下のように作成しました
unsigned int Sw[16];
<中略>
SwNum=7;
Sw[0]=(1<<SwNum);
としたとき、Sw[0]=65408という結果になってしまいました。
(本当はSw[0]=128がほしかったんですけど・・・・)
これってなにが、間違えなのでしょうか?
どなたか、ご教示ください。
 

Re: avrのfuse

 投稿者:nekosan  投稿日:2009年11月27日(金)00時35分3秒
返信・引用
  > No.244[元記事へ]

kumanさんへのお返事です。

> はじめて見せていただきました。
> AVRで
> >なぜかEEPROMがクリアされてしまいます
> の件は解決されたでしょうか。
> fuseビットに、プログラムを書き換えたときにEEPROMを
> クリアするかしないかの設定があります。

kumanさん、ありがとうございます。

当件ずっと放置状態でした。
(プログラム書き込み→EEPROM書き込みとすれば一応
 用を足すことができていたので…)

そうでしたか。EEPROM保護オン/オフの制御ビットが
フューズにあったんですね。全然見てませんでした。
意図的に変更しようとしたフューズビット以外は
いつもデフォルトのまま使っていたので…

助かりました!

kumanさんのサイト、時々参考にさせていただいてます。
今後ともよろしくお願い致します。
 

Re: (無題)

 投稿者:nekosan  投稿日:2009年11月27日(金)00時20分18秒
返信・引用
  > No.243[元記事へ]

PIC初心者さんへのお返事です。

> PICマイコンのコンフィグで、
> CPD:データEEPROM読み出し不可とする機能を設定(プロテクトかける)した場合に、外からはデータを読み出すことは出来なくなりますが、マイコンに書き込んだプログラムでは、読み書きできるのでしょうか?詳しい方、教えてください。


PIC、AVRともコードエリア(プログラムエリア)、
データエリア(EEPROM)とも読み出し禁止にできる
フューズビットがあると思いますが、PIC、AVR
に限らず各チップ毎に登載しているフューズビットの
種類もその意味(影響)も違ってくるはずなので、
正確な情報は各チップのデータシートを確かめて
みてください。

ただ、うろ覚えな記憶を頼りに思い出してみると、
PICのコードプロテクトは知財保護の観点から
でたらめなデータしか読み出せなくするという機能で、
AVRの場合は動作時にノイズなどでプログラムや
データが破壊されない為の機能と知財保護機能の
両方が付いていて組み合わせて使えるということ
だったと思います。
(正確な情報かは自信ありません。あと最近の
 チップではもっと色んな機能が付いてるかも
 しれません)

あと、PIC初心者さんが気にされているのは多分
以下のようなことだと思うのですが、

→プログラム動作時にプログラムメモリ領域や
 EEPROM領域を「実行中のプログラム」が読み出し
 た時にプロテクトされた情報しか読み出せない
 のではないか?

そういう理解でよいでしょうか?
このあたりはICSP(もしくはISP)周りの
機能で実現しているはずなので、コア−メモリ間
の読み書きについては影響ないはずだと思います。

試しに、プログラムメモリやEEPROM上に定数テーブル
などを作っておいて、プログラム中から読み出して、
それをUARTなどで出力してモニターしてみてください。
(結果がわかったら教えていただければありがたいです)
 

Re: AVRのプロテクト

 投稿者:kuman  投稿日:2009年11月26日(木)21時37分45秒
返信・引用
  > No.242[元記事へ]

PIC初心者さんへのお返事です。

> AVRマイコンのプロテクトについて教えてください。PICマイコンではプログラムとEEPROMのエリアが読み出せないようにプロテクトをかけられると思いますが、AVRも同じように、プログラムとEEPROMエリアが読み出せないようにプロテクトはかけられますか?AVRは資料があんまりないので良くわからないので教えてください。

「ロックビット」という項目があります。このビットをセットすると書き込み禁止にしたり、読み出し(プログラム、EEPROMも)も禁止することができます。方法はライタの説明にあります。
一度セットすると全消去以外にリセットできません。逆に言えばすべてを消すと再び新品と同じように使えるようです。

PICはそうでなかったように思います。

http://www.geocities.jp/kuman2600/index.html

 

avrのfuse

 投稿者:kuman  投稿日:2009年11月26日(木)18時03分29秒
返信・引用
  はじめて見せていただきました。
AVRで
>なぜかEEPROMがクリアされてしまいます
の件は解決されたでしょうか。
fuseビットに、プログラムを書き換えたときにEEPROMを
クリアするかしないかの設定があります。

http://www.geocities.jp/kuman2600/index.html

 

以上は、新着順1番目から10番目までの記事です。 1  2  3  4  5  6  7  8  9  10  |  《前のページ |  次のページ》 
/26 


[PR]