AVRマイコン総合スレ Part22

このエントリーをはてなブックマークに追加
952774ワット発電中さん:2011/12/03(土) 23:11:59.70 ID:m6UyIUMl
twitterは独り言を垂れ流すところだからそっちの方が向いてるよな
953774ワット発電中さん:2011/12/04(日) 14:43:20.31 ID:C7PZZqLK
2chはお前らの日記帳だ
954774ワット発電中さん:2011/12/04(日) 14:45:42.80 ID:zUaUt/Jz
生きた証だ
955774ワット発電中さん:2011/12/04(日) 15:28:48.37 ID:RzdRqIYd
生きた証…かっくいいな!
956774ワット発電中さん:2011/12/04(日) 15:33:34.83 ID:H8XGlkyK
わかりやすく言うと自分のチンコを映す鏡みたいなものか
957774ワット発電中さん:2011/12/04(日) 16:34:40.94 ID:AfK9bNen
いきなりですが
万歩計のLCDを駆動したくてですね、シフトレジスタとか使うんですかと
シフレジスタってのが1個100円とかなんですが、なんで2313と同じ値段なんですかと
というか、汎用ロジックなんか使わずに
ATMEGA64A−AU64ピン 300円でいいんじゃないかと思い始めてますが
大体あってますか?w
958774ワット発電中さん:2011/12/04(日) 17:15:40.63 ID:0dotsDwM
大体わからんから箇条書きでヨロ。
959774ワット発電中さん:2011/12/04(日) 17:16:36.03 ID:RzdRqIYd
大体合ってると思うど
960774ワット発電中さん:2011/12/04(日) 18:54:28.26 ID:lfDWBK+C
シフトレジスタ?
961774ワット発電中さん:2011/12/04(日) 20:16:54.61 ID:RbQRaxbo
工夫しても一秒数回のカウンタとしてしか使えない
そういう用途にはぴったりだけど、実例が思いつかないね
962774ワット発電中さん:2011/12/04(日) 20:29:15.60 ID:H8XGlkyK
生のLCDとして駆動したいということだろ流石に
1/3デューティとか1/2バイアスとかの世界さ
963774ワット発電中さん:2011/12/04(日) 21:34:12.52 ID:RzdRqIYd
7セグの間違いかと勝手に解釈してた。…
964774ワット発電中さん:2011/12/04(日) 22:13:57.54 ID:zUaUt/Jz
生のLCDドライブって面倒臭そう
グラフィック液晶じゃないから出鱈目なデューティーでも輝度斑とか気にならないのかな
965774ワット発電中さん:2011/12/04(日) 22:18:16.14 ID:NmrOaV0D
LCDコントローラ内蔵のAVRがあるだろ。
966774ワット発電中さん:2011/12/04(日) 23:38:31.69 ID:a2xp5sIm
それで結局万歩計作るのか。
967774ワット発電中さん:2011/12/05(月) 08:49:26.31 ID:Mj4OshXk
超多機能万歩計で
968774ワット発電中さん:2011/12/05(月) 09:18:46.79 ID:V24wnOs5
GPS機能搭載
969774ワット発電中さん:2011/12/05(月) 09:35:50.20 ID:Cb+SEboY
結局聞き逃げか…
970774ワット発電中さん:2011/12/05(月) 10:40:44.68 ID:OiUZ0/bY
きっと万歩計つけて散歩中
971774ワット発電中さん:2011/12/05(月) 12:00:56.13 ID:Mj4OshXk
せっかち過ぎ
一週間位は許容しろよ
972774ワット発電中さん:2011/12/05(月) 12:36:31.49 ID:XhCgbuyM
100均のLCDをばらして使うのはいいけど、
あれってコネクタじゃなくて導電性のゴムみたいなヤツが
使われてるから、自作だとめんどくさいと思うけどなぁ。
973774ワット発電中さん:2011/12/05(月) 13:21:23.33 ID:MDjMCw4P
>>972
導電ゴムの寸法に合わせて基盤起こすのも面倒だから、結局基盤流用
んで、仕方ないから電卓ボタンのマトリクス解析して、AVRにボタン押させるわけですね、わかります
974774ワット発電中さん:2011/12/05(月) 13:26:01.87 ID:ZEKPl10Y
樹脂モールドされたCPUからの延びてる配線の根元をカッター使ってCPUから切り離し
ポリウレタン線配線で引き出せば
どんな接続構造のLCDだろうが流用できる がんばってほしい
975774ワット発電中さん:2011/12/05(月) 15:13:49.61 ID:7LAnqk0i
ロジックICだけでやるLCD表示がどこかの本に載ってたな、あれはどうやってたんだっけ
976774ワット発電中さん:2011/12/05(月) 15:40:53.88 ID:UlUX0Wp/
材料費100円
技術料10000円
977774ワット発電中さん:2011/12/05(月) 15:59:43.75 ID:XhCgbuyM
>>975
基本的に電圧かけると色が変わる(偏光する)というだけのこと。
周期的に極性をひっくり返さないと劣化するからEOR取ればいいだけじゃ?
978774ワット発電中さん:2011/12/05(月) 23:46:17.35 ID:LCY+pEQI
74HC4543(もしくはノーマルの4543)使う方法かな?
979975:2011/12/06(火) 14:28:26.79 ID:S8xhE1Cq
本を漁ったらあったあった
トランジスタ技術SPECIAL No.79 初歩のHDL設計学習帳 62ページ
Ex-ORを使ったあたりでこれは74HC86でいいのかな、出力をEx-ORに繋いで、液晶駆動用クロックをExORと液晶のCOMに繋ぐやり方だった

>977さんのやり方ですね
980774ワット発電中さん:2011/12/06(火) 16:02:43.22 ID:xF5AV4oL
↓これもう試した人いる?
http://www.obdev.at/products/vusb/index.html
981774ワット発電中さん:2011/12/06(火) 16:23:52.59 ID:q9Iu/NKm
>>980
何か新しく変わった部分でもあるのですか?
982774ワット発電中さん:2011/12/06(火) 16:58:30.49 ID:0LD1Gc6U
>>980

USBケーブルが長いと動かないこともしばしばあるけどねw
983774ワット発電中さん:2011/12/06(火) 17:04:09.48 ID:C9ULml98
教えてください。
入力ポートの読み取りで、
if ( (PINB & (1<<PINB5)) == 0 )
だと読み取れるのですが、
if ( ((PINB>>PINB5) & 1) == 0 )
だと読み取れません。
なにか大きな勘違いをしていますか?
ロータリーDIPスイッチの値を読み取るのに、
いったんビットが最下位に来たほうがやりやすかったので、
下記の式を使おうとしたのですが、
うまくいきません。
ちなみに
#define PINB _SFR_IO8(0x16)
#define PINB5 5
です。
984774ワット発電中さん:2011/12/06(火) 17:22:48.84 ID:0LD1Gc6U
コンパイル結果を見ると普通に動きそうだけどなぁ
985774ワット発電中さん:2011/12/06(火) 17:48:15.67 ID:Km5yT77V
PINBの値は外部の回路で決まるから
シフトしても外部の回路で決まる値のままだからでは?
986774ワット発電中さん:2011/12/06(火) 17:50:41.70 ID:Km5yT77V
馬鹿なレスだったな取り消します
987774ワット発電中さん:2011/12/06(火) 17:51:17.45 ID:ZCwxt7mI
なるほど、
PINB>>5でアドレス0X12の値を変更(書き込み)しようとしてることになるのか
988774ワット発電中さん:2011/12/06(火) 17:51:35.67 ID:ZCwxt7mI
あれ、違うのw
989774ワット発電中さん:2011/12/06(火) 17:52:40.42 ID:Km5yT77V
わからない いったん別の変数に代入してやってみたらどうなるか
990774ワット発電中さん:2011/12/06(火) 18:21:31.79 ID:ZCwxt7mI
_SFR_IO8(アドレス)は関数じゃなくて単なる*(volatile uint8_t *)(アドレス)への置換マクロなので、
返り値がレジスタやスタックに詰まれるわけではない

おそらく0X16の中の数値をレジスタに読み込んでシフトして格納してるはず
まぁそのままレジスタの値を使って&演算してくれれば問題なかったろうが、
ご丁寧にvolatileつきなので、&演算のときに改めて再読み込み、でも中身は変わってない

ってカンジか、おぉなるほど!
>>985さんのカキコを見て思ったが、違ってたら恥ずかしいなコレw
991774ワット発電中さん:2011/12/06(火) 18:24:40.42 ID:0LD1Gc6U
>>990
コンパイル結果見ても格納はしてないよ
992774ワット発電中さん:2011/12/06(火) 18:37:54.90 ID:sIwQqJn6
>>983
最適化の副作用のような気もするので
その部分だけコンパイル結果晒してみてくれ
993774ワット発電中さん:2011/12/06(火) 18:50:44.95 ID:qQP/gpeM
これでどうでしょうか?

  //コンパイル結果のチェック用1
  if ( PINB & (1<<PINB_SELSW) == 0){
11c:  86 e3      ldi  r24, 0x36  ; 54
11e:  90 e0      ldi  r25, 0x00  ; 0
120:  fc 01      movw  r30, r24
122:  80 81      ld  r24, Z
    wait100us(1);
  }
  //コンパイル結果のチェック用2
  if ( ((PINB>>PINB_SELSW) & 1) == 0){
124:  86 e3      ldi  r24, 0x36  ; 54
126:  90 e0      ldi  r25, 0x00  ; 0
128:  fc 01      movw  r30, r24
12a:  80 81      ld  r24, Z
12c:  82 95      swap  r24
12e:  86 95      lsr  r24
130:  86 95      lsr  r24
132:  83 70      andi  r24, 0x03  ; 3
134:  88 2f      mov  r24, r24
136:  90 e0      ldi  r25, 0x00  ; 0
138:  81 70      andi  r24, 0x01  ; 1
13a:  90 70      andi  r25, 0x00  ; 0
13c:  00 97      sbiw  r24, 0x00  ; 0
13e:  19 f4      brne  .+6     ; 0x146 <main+0x4a>
    wait100us(1);
140:  81 e0      ldi  r24, 0x01  ; 1
142:  90 e0      ldi  r25, 0x00  ; 0
144:  e6 d2      rcall  .+1484    ; 0x712 <wait100us>
  }
  //コンパイル結果のチェックの終わり
  wait100us(1);
146:  81 e0      ldi  r24, 0x01  ; 1
148:  90 e0      ldi  r25, 0x00  ; 0
14a:  e3 d2      rcall  .+1478    ; 0x712 <wait100us>
994774ワット発電中さん:2011/12/06(火) 18:58:47.65 ID:0LD1Gc6U
>>993
ビット6に変更したのかな
995774ワット発電中さん:2011/12/06(火) 19:17:53.20 ID:sIwQqJn6
これ右6bitシフトしてね?

if ( PINB & (1<<PINB_SELSW) == 0){
が無かったことにされてんのは何でかね?
このデバイスのportBはbit6は1固定か?
996774ワット発電中さん:2011/12/06(火) 19:25:47.81 ID:qQP/gpeM
>>994
すみません6でした

>>995
コンパイルの始めにもダミーを入れて挟み撃ちにしましたが変わりありませんでした。
全く同じ処理だから最適化で端折ったのかもしれません。


他にも原因不明の挙動だらけなのでその一環かもしれません。
(電圧測ると内部プルアップされてない、スイッチを無視して読み取りがON-OFFを300Hzで繰り返す)
お騒がせしました。
997774ワット発電中さん:2011/12/06(火) 19:30:30.99 ID:sIwQqJn6
PB6はXTAL1のピンだが
内蔵オシレーター使用?
998774ワット発電中さん:2011/12/06(火) 19:36:24.72 ID:qQP/gpeM
ATTINY861Aで
PB6/PCINT14/INT0/T0/ADC9
とのことです。
ご心配ありがとうございます。
今日はもう切り上げます
999774ワット発電中さん:2011/12/06(火) 20:08:26.46 ID:sIwQqJn6
if ( ((PINB>>PINB_SELSW) & 1) == 0){

この部分についてコンパイル結果は正しいようなので
動かない原因は他の部分だと思われます

また動作不良の直接の原因ではないかもしれませんが
内蔵プルアップは電流を流す力が非常に弱いため
スイッチなどの入力を行うときにはちゃんと外付け抵抗で
プルアップすることをオススメします。
1000774ワット発電中さん:2011/12/06(火) 20:43:44.14 ID:iAzGBtw9
                  -−-
            _.  ' ´        ` 、
           / /            \
         / //             ` ー-
.        //ィ'   ./ __ _,./  | |
        ,ィ' /   / ´,  ' ^ ′   ,| |
       '´ l′  _/ .__/    /    7ト/.
.        / . ィ'/  「'7女ァr /   / !'| lヽ |
       //,r1' ,.イ ム.  / / / ぇ、リ |  |
.       ´ l.{ |/ | [_/  //   ' ヾ:、  |
         | ヽ|   |     '    ん /|  / |
         | |   |         ヽ、/,r´|/  ,ハ
         | |   |\   ´’      /  ,  , ' l/  AVRマイコンもいろいろだよ
         | |   | j` ー--‐ャ  ´ / |/
        '. ハ.   |/   / /  , <   !
   ⊂,. ̄`ヽ∨ ∨ | ̄`/   / , /,r⌒.ー、
   /     ゙l   V' |  /   //'´ i´   `ヾ
    }',. , /  |   ヽl. /  /'    !     )
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。