twitterは独り言を垂れ流すところだからそっちの方が向いてるよな
2chはお前らの日記帳だ
生きた証だ
生きた証…かっくいいな!
わかりやすく言うと自分のチンコを映す鏡みたいなものか
いきなりですが
万歩計のLCDを駆動したくてですね、シフトレジスタとか使うんですかと
シフレジスタってのが1個100円とかなんですが、なんで2313と同じ値段なんですかと
というか、汎用ロジックなんか使わずに
ATMEGA64A−AU64ピン 300円でいいんじゃないかと思い始めてますが
大体あってますか?w
大体わからんから箇条書きでヨロ。
大体合ってると思うど
シフトレジスタ?
工夫しても一秒数回のカウンタとしてしか使えない
そういう用途にはぴったりだけど、実例が思いつかないね
生のLCDとして駆動したいということだろ流石に
1/3デューティとか1/2バイアスとかの世界さ
7セグの間違いかと勝手に解釈してた。…
生のLCDドライブって面倒臭そう
グラフィック液晶じゃないから出鱈目なデューティーでも輝度斑とか気にならないのかな
LCDコントローラ内蔵のAVRがあるだろ。
それで結局万歩計作るのか。
超多機能万歩計で
GPS機能搭載
結局聞き逃げか…
きっと万歩計つけて散歩中
せっかち過ぎ
一週間位は許容しろよ
100均のLCDをばらして使うのはいいけど、
あれってコネクタじゃなくて導電性のゴムみたいなヤツが
使われてるから、自作だとめんどくさいと思うけどなぁ。
>>972 導電ゴムの寸法に合わせて基盤起こすのも面倒だから、結局基盤流用
んで、仕方ないから電卓ボタンのマトリクス解析して、AVRにボタン押させるわけですね、わかります
樹脂モールドされたCPUからの延びてる配線の根元をカッター使ってCPUから切り離し
ポリウレタン線配線で引き出せば
どんな接続構造のLCDだろうが流用できる がんばってほしい
ロジックICだけでやるLCD表示がどこかの本に載ってたな、あれはどうやってたんだっけ
材料費100円
技術料10000円
>>975 基本的に電圧かけると色が変わる(偏光する)というだけのこと。
周期的に極性をひっくり返さないと劣化するからEOR取ればいいだけじゃ?
74HC4543(もしくはノーマルの4543)使う方法かな?
979 :
975:2011/12/06(火) 14:28:26.79 ID:S8xhE1Cq
本を漁ったらあったあった
トランジスタ技術SPECIAL No.79 初歩のHDL設計学習帳 62ページ
Ex-ORを使ったあたりでこれは74HC86でいいのかな、出力をEx-ORに繋いで、液晶駆動用クロックをExORと液晶のCOMに繋ぐやり方だった
>977さんのやり方ですね
>>980 何か新しく変わった部分でもあるのですか?
>>980 ノ
USBケーブルが長いと動かないこともしばしばあるけどねw
教えてください。
入力ポートの読み取りで、
if ( (PINB & (1<<PINB5)) == 0 )
だと読み取れるのですが、
if ( ((PINB>>PINB5) & 1) == 0 )
だと読み取れません。
なにか大きな勘違いをしていますか?
ロータリーDIPスイッチの値を読み取るのに、
いったんビットが最下位に来たほうがやりやすかったので、
下記の式を使おうとしたのですが、
うまくいきません。
ちなみに
#define PINB _SFR_IO8(0x16)
#define PINB5 5
です。
コンパイル結果を見ると普通に動きそうだけどなぁ
PINBの値は外部の回路で決まるから
シフトしても外部の回路で決まる値のままだからでは?
馬鹿なレスだったな取り消します
なるほど、
PINB
>>5でアドレス0X12の値を変更(書き込み)しようとしてることになるのか
あれ、違うのw
わからない いったん別の変数に代入してやってみたらどうなるか
_SFR_IO8(アドレス)は関数じゃなくて単なる*(volatile uint8_t *)(アドレス)への置換マクロなので、
返り値がレジスタやスタックに詰まれるわけではない
おそらく0X16の中の数値をレジスタに読み込んでシフトして格納してるはず
まぁそのままレジスタの値を使って&演算してくれれば問題なかったろうが、
ご丁寧にvolatileつきなので、&演算のときに改めて再読み込み、でも中身は変わってない
ってカンジか、おぉなるほど!
と
>>985さんのカキコを見て思ったが、違ってたら恥ずかしいなコレw
>>983 最適化の副作用のような気もするので
その部分だけコンパイル結果晒してみてくれ
これでどうでしょうか?
//コンパイル結果のチェック用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>
これ右6bitシフトしてね?
if ( PINB & (1<<PINB_SELSW) == 0){
が無かったことにされてんのは何でかね?
このデバイスのportBはbit6は1固定か?
>>994 すみません6でした
>>995 コンパイルの始めにもダミーを入れて挟み撃ちにしましたが変わりありませんでした。
全く同じ処理だから最適化で端折ったのかもしれません。
他にも原因不明の挙動だらけなのでその一環かもしれません。
(電圧測ると内部プルアップされてない、スイッチを無視して読み取りがON-OFFを300Hzで繰り返す)
お騒がせしました。
PB6はXTAL1のピンだが
内蔵オシレーター使用?
ATTINY861Aで
PB6/PCINT14/INT0/T0/ADC9
とのことです。
ご心配ありがとうございます。
今日はもう切り上げます
if ( ((PINB>>PINB_SELSW) & 1) == 0){
この部分についてコンパイル結果は正しいようなので
動かない原因は他の部分だと思われます
また動作不良の直接の原因ではないかもしれませんが
内蔵プルアップは電流を流す力が非常に弱いため
スイッチなどの入力を行うときにはちゃんと外付け抵抗で
プルアップすることをオススメします。
-−-
_. ' ´ ` 、
/ / \
/ // ` ー-
. //ィ' ./ __ _,./ | |
,ィ' / / ´, ' ^ ′ ,| |
'´ l′ _/ .__/ / 7ト/.
. / . ィ'/ 「'7女ァr / / !'| lヽ |
//,r1' ,.イ ム. / / / ぇ、リ | |
. ´ l.{ |/ | [_/ // ' ヾ:、 |
| ヽ| | ' ん /| / |
| | | ヽ、/,r´|/ ,ハ
| | |\ ´’ / , , ' l/ AVRマイコンもいろいろだよ
| | | j` ー--‐ャ ´ / |/
'. ハ. |/ / / , < !
⊂,. ̄`ヽ∨ ∨ | ̄`/ / , /,r⌒.ー、
/ ゙l V' | / //'´ i´ `ヾ
}',. , / | ヽl. / /' ! )
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。