ATINY13Aの割込み発生しません
投稿者: 認知はじまり
|
2020/07/01(水) 13:46 No. 14623 引用 |
|
こんにちは BASCOMで色々やってますが、割込み発生しないのでお教えいただきたく。 ・INT0のrisingで割込み NG ・PCINT1で割込み NG REGFILEを13にしたり、13Aにしたりしてますが動きません プログラムが悪いのでしょうか? in は外部より、+5V印加 十数秒でOFF
$regfile ="ATtiny13.DAT" $crystal = 9600000 $hwstack = 32 $swstack = 8 $framesize = 8
Config Portb.0 = Input Config Portb.1 = Input Config Portb.4 = Output
Config Int0 = rising
Portb.0=0 Portb.1=0 Portb.2=0 Portb.3=0 Portb.4=0
Enable Int0 On Int0 Isr Enable Interrupts
Enable Pcint0 On Pcint0 pci0 Pcmsk = &B00000101 Enable Interrupts
waitms 500
Do
Loop
END
Isr: waitms 10
while Portb.1=1 Portb.4=1 Wend Portb.4=0 Return
Pci0: waitms 10
if Portb.0=1 then Portb.4=0 Return
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/01(水) 16:57 No.14624 |
|
チャタリングは出ますが、PB0またはPB1にスイッチをつなぐと、PB4につないだLEDが反転点灯していますよ。
$regfile ="ATtiny13.DAT" $crystal = 9600000 $hwstack = 32 $swstack = 8 $framesize = 8
Config Clockdiv = 1 Config Portb.0 = Input Config Portb.1 = Input Config Portb.4 = Output
Config Int0 = rising
Portb.0=1 Portb.1=1 Portb.2=0 Portb.3=0 Portb.4=0
Enable Int0 On Int0 Isr Enable Interrupts
Enable Pcint0 On Pcint0 pci0 Pcmsk = &B00000001 Enable Interrupts
waitms 500
Do
Loop
END
Isr: waitms 30 toggle portb.4 return
Pci0: waitms 30 toggle portb.4 return
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/01(水) 18:00 No.14625 |
|
ありがとうございました。 スイッチ実験していませんでした。 回路からの電圧変化で動かそうとしています。 その時、割込み入力ポートは5Vになっても、PORTb.4は、電圧でませんでした。 頂いたプログラムで試してみます。 ありがとうございました。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/02(木) 19:23 No.14626 |
|
やってみました。 INT0は、予め差し込んだ外部回路でONなっても動きませんでした。 ピンヘッダなんで、起動後、それを差し込めば割込みが起こります。 CONFIGのRISINGが効いていないのか?機械的差し込みでキックするようです。 立ち上がり波形の問題なんでしょうかね。 PCINTは、予め差し込んだ状態でも割込みが起こります。
PCINTは、割り込み発生ステータスが無いようですので、INT0を止めてPCINTにしようかと思います。
中々、マイコン難しいですね。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/02(木) 20:18 No.14627 |
|
スイッチで問題なく割り込みは発生したので、回路の問題だと思います。
[H]レベルで起動させたいようですが、OFFの間は[L]レベルになっていますか? 入力がオープン状態では[H]レベルと認識されているかもしれません。 電源の[H]レベルだけがかかる入力なら、通常はGNDへ10K〜100KΩ程度のプルダウン抵抗が必要です。
信号の様子から、わざわざ割り込みを使う必要があるのでしょうか? 短期間のパルスなら割り込みで捉える必要がありますが、数秒もある信号ならメインルーチンでレベルを見る方が簡単です。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/03(金) 19:51 No.14628 |
|
こんばんは おっしゃる通り、DO-LOOPの中に入れてみましたが NGでした。 ピンヘッダー抜き差し NG はじめから、出力HI状態 NG
PORTB.1は、HIが出ています。 外付けRをつけないとだめなのでしょうか?
$regfile ="ATtiny13.DAT" $crystal = 9600000 $hwstack = 32 $swstack = 8 $framesize = 8
Config Clockdiv = 1 Config Portb.0 = Input Config Portb.1 = Input Config Portb.4 = Output
'Config Int0 = rising
Portb.0=0 Portb.1=0 Portb.2=0 Portb.3=0 Portb.4=0
'Enable Int0 'On Int0 Isr 'Enable Interrupts
Enable Pcint0 On Pcint0 pci0 Pcmsk = &B00000001 Enable Interrupts
waitms 500
Do
if PORTB.1=1 then PORTB.4=1 else PORTB.4=0
Loop
END
'Isr: 'waitms 30 'toggle portb.4 'return
Pci0: waitms 30 toggle portb.4 return
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/03(金) 21:32 No.14629 |
|
> PORTB.1は、HIが出ています。 Config Portb.0 = Input Config Portb.1 = Input Portb.0=0 Portb.1=0
PB0もPB1も入力に設定してAVR内蔵プルアップをOFFにしていますから、[H]が出力されることはありません。 フローティングのはずですが、何で「HIが出ています」を確認しましたか?
> 外付けRをつけないとだめなのでしょうか? 入力信号の電源回路がOFFの時に[L](GNDレベル)になるような回路なら動作するはずです。 OFFの時は無信号で、ONの時だけ電源レベルが加わるようなら、プルダウンをしないとフローティング状態では出力(PB4)は不安定なままです。
プログラム以前に、回路設計の問題だと思います。 「フローティング」の意味がわからなければ、言ってください。
以下は間違いの修正です。 Do If Pinb.1 = 1 Then Portb.4 = 1 Else Portb.4 = 0 Loop
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/04(土) 07:42 No.14630 |
|
ありがとうございます IF THENの判定 PORTB.1ではNGで、PINB.1なんですね。 10年前のプログラムを見てみるとPINで記述していました。なぜそうなってたかは不明 THEN 以下はPORTの記述で良いのですか? (PINとPORT群+ピン番のプログラム上の違い判りませんね)
フローティングは、今回もPORTB.2はCONFIGもしていないし、マイコン動作時に は2.8Vとか電圧が出ています。 CONFIGし L設定すれば良いんですけど。 デジタルICの入出力処理 外部抵抗やショートはしていますが、マイコンは暴走しないだろうと思って放置です。
このCONFIG設定でピットホールになりました。 全てのPORTをCONFIGし、L設定にしたところ、PORTB.5 がRESET端子になっており マイコンが動きませんでした。 笑
もう認知が進んでます。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/04(土) 09:56 No.14631 |
|
> (PINとPORT群+ピン番のプログラム上の違い判りませんね) AVRは1つのポートを入力や出力そして内部プルアップやポートの設定状態などをすべてコントロールできるようになっています。 なのでBASCOMは、出力に対しては[PORT]で、入力に対しては[PIN]と表記することで、AVRの各レジスターを判断して操作してくれます 以下に詳しく書いたつもりです。 http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/BASCManu/BASCMiop.html
> フローティングは、今回もPORTB.2はCONFIGもしていないし、マイコン動作時には2.8Vとか電圧が出ています。 2.8Vの電圧が出ているのではなく、未接続の開放状態なので、周囲のノイズ(例えば電源の50-60Hz)が浮遊しているだけです。 オシロスコープで見ないと、現象はわからないです。
> CONFIGし L設定すれば良いんですけど。 未使用のポートは、入力に設定して内蔵プルアップをONにするのが基本です。
> デジタルICの入出力処理 外部抵抗やショートはしていますが、マイコンは暴走しないだろうと思って放置です。 未使用のポートを放置すると外部からの誘導ノイズでポート入力が[H]-[L]を不安定に繰り返すので、無駄に消費電力が上がります。 これは、マイコンに限らず、C-MOS回路の基本中の基本です!
ですから、電源の[H]レベルのみを検知したいなら、ポートを抵抗器でプルダウンしておかないと[H]レベルを確実には検知できないと言うことです。 スイッチなどを[L]レベルで検出する際に、内蔵プルアップをONにしないと動作しないのと同じ原理です。
> このCONFIG設定でピットホールになりました。 > 全てのPORTをCONFIGし、L設定にしたところ、PORTB.5 がRESET端子になっておりマイコンが動きませんでした。 笑 意味がよくわかりません・・・
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/04(土) 13:08 No.14632 |
|
ありがとうございました。 1.入力はPINB.Xで、Hでスタートし外部電位を読み込み 出力はPORTB.XでLでスタートで PORTB.Xで出力記述。或いはPINB.Xでも出力していますね。 例では、Config PORTC = &B00001111 ' ポートCのPin0〜3を出力、Pin4〜7を入力に設定します。 Config PIND.3 = Output CONFIGでの設定がちょっと混乱。PORT群一括設定かPIN個別設定か? 2.条件式等の入力比較時はPINB.X でないとマイコンに読み込めない ですね。 (例) Config PORTA = Input ' ポートAをすべて入力ポートに設定します。 Config PORTB = Output ' ポートBをすべて出力ポートに設定します。 Config PORTC = &B00001111 ' ポートCのPin0〜3を出力、Pin4〜7を入力に設定します。 Config PIND.3 = Output ' ポートDのPin3を出力に設定します。
3.マイコンでも終端しないとダメなんですね、チップ内蔵Rが働き外部Rが省略可能かと 思っていました。
4.#1は、I/O端子とRESETが共用になってますよね。 ここを configでIN/OUTにし、PORTB.5=0 とかに設定するとチップRESETとして 働かずHにならず、マイコン動かない)ことはないかな と思いました。 #1に外部スイッチをつけて、H/L切り替えるとRESETするんじゃないかと。 ここでも躓きました。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/04(土) 18:16 No.14633 |
|
> 1.CONFIGでの設定がちょっと混乱。PORT群一括設定かPIN個別設定か? CONFIG命令は[PORT]でも[PIN]でも同じ働きです。 個別指定するか一括指定するかは、記述次第で任意です。 基本的に、ポートピンの状態を読み込む場合は、PINを使用すると憶えればいいです。
> 2.条件式等の入力比較時はPINB.X でないとマイコンに読み込めないですね。 上記の通り、ポートピンの状態を読み込む場合は、読み込むレジスター番号が変わるのでPINを使用しないとだめなんです。
> 3.マイコンでも終端しないとダメなんですね、チップ内蔵Rが働き外部Rが省略可能かと思っていました。 終端ではなく、入力がスイッチのように解放でフローティング状態になる場合は、AVR内蔵プルアップをONにするか、外部でプルアップ抵抗器を付けるか、[H]の検知の場合はプルダウン抵抗器が必要になると言うことです。 開放状態を避けるため、入力を安定させるための抵抗器であり必需品です。 他のマイコンでは、内蔵でプルダウン機能が付いている物もありますが、AVRはプルアップだけです。 初期状態でプルアップがOFFになっているのは、入力が[H]か[L]のレベルで確定している場合に、プルアップ抵抗器だけでも消費電力が無駄になるからです。
> 4.#1は、I/O端子とRESETが共用になってますよね。 > ここを configでIN/OUTにし、PORTB.5=0 とかに設定するとチップRESETとして働かずHにならず、マイコン動かない)ことはないかな と思いました。 [RESET]ピンは、内部で30KΩ程度の抵抗器で強制的にプルアップされています。 [RESET]と[PB5]の兼用ピンは、ヒューズビットで[PB5]専用に切り替えますが、一度切り替えるとISP書き込み器では戻せなくなるので、くれぐれも注意してください。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/05(日) 06:06 No.14634 |
|
ありがとうございます。 ご説明判りました。 マイコンだと外部抵抗、気にしなくて良いものと 思い込んでいました。 今回、難航した切っ掛けは、PORTB.5を出力にしようと して、いくらプログラムを変えても、Hが出っ放し になり、13Aって何?と思いました。(強制プルアップとは 思いもかけず) 通常は、I/Oが多い品種なので、兼用ピンは避ける様にしてました。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/05(日) 09:14 No.14635 |
|
> マイコンだと外部抵抗、気にしなくて良いものと思い込んでいました。 MOS構造のデバイスで、入力をフローティングにできる物はないと思いますよ! トランジスタ回路やTTLでも、ノイズを避けるために入力に対策をするのが基本ですけどね!!
> 今回、難航した切っ掛けは、PORTB.5を出力にしようとして、いくらプログラムを変えても、Hが出っ放しになり、13Aって何?と思いました。(強制プルアップとは思いもかけず) マニュアルを少し読んでいただければ、どのAVRチップでも[RESET]ピンが内部でプルアップされているのはわかるんですけどね!
> 通常は、I/Oが多い品種なので、兼用ピンは避ける様にしてました。 Mega328Pでも[RESET]と[PC6]は兼用ですよ? さすがに40ピン以上のチップは単独ですけどね!
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/05(日) 15:24 No.14636 |
|
そういえば、4.7KΩの8Pラダー抵抗器持ってましたね。 電子回路の出力付加を付けない端子に、抵抗をGNDしてました。 そういえば、電源RESETか外部RESETか考えたこともありました。 そういえば、I/Oが足りない時高圧プログラミングしていたことも。 STK500ですが配線面倒なので、ISPでやってます。
基礎不足と認知症の気配濃厚ですね。
気を取り直して、プログラミング始めます。 PININT は、数秒のHパルスを入れ、30秒間 ONしているPORTB.4の出力を 途中で残りの30秒まで強制 L にする回路です。 その後、30秒が済んだらPORTB.1 がLとなり、強制 Lにしたフラグ/コマンドを フリーにする回路。
どうなることやら
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/05(日) 17:47 No.14637 |
|
> 電子回路の出力付加を付けない端子に、抵抗をGNDしてました。 > そういえば、I/Oが足りない時高圧プログラミングしていたことも。 思い出していただければよかったです!
> PININT は、数秒のHパルスを入れ、30秒間 ONしているPORTB.4の出力を途中で残りの30秒まで強制 L にする回路です。 > その後、30秒が済んだらPORTB.1 がLとなり、強制 Lにしたフラグ/コマンドをフリーにする回路。 その時間差なら、割り込みを使わずにメインルーチンでレベルを見る方が確実で簡単で早いです。 入力が変化するまでAVRをスリープさせて消費電力を落としたいのなら、割り込みを使うといいですね。 がんばってください!
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/11(土) 14:22 No.14642 |
|
こんにちは もう奥深くて苦戦しています。 アドバイスで入力に外付けRxつけたり、インバータかましたりしました。 プログラムが悪いのでしょうか? PIN変化割込みせず、どうしたものか?と
1)外部のLの出力が入力PINB.1に30秒 PORTB.4がH 2)割込みが無いと、入力PINB.1Hとなり放置 PORTB.4がL 3)Lになると 同じく30秒 繰り返し これはOK 4)1)の間にPINB.0に割込み H 0.5秒 チョン押し A=1設定 これでPORTB.4をL、A=0にして、割込み後残り30秒 PINB.1がHになるまで放置
4)が動きません。
IF文がおかしいのか? お忙しいところ恐縮ですがご教示お願いいたします。
$regfile ="ATtiny13.DAT" $crystal = 9600000 $hwstack = 32 $swstack = 8 $framesize = 8
Dim A as Byte
Config Clockdiv = 1 Config Pinb.0 = Input Config pinb.1 = Input Config PINb.4 = Output
pinb.0=1 pinb.1=1 PORTb.4=0
Enable Pcint0 On Pcint0 pci0 Pcmsk = &B00000001 Enable Interrupts
waitms 500
Do
if PINB.1=0 then if A=0 then PortB.4=1 else portB.4=0 A=0 end if else portB.4=0 A=0 end if
Loop
END
Pci0: waitms 30 A=1 return
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/11(土) 14:25 No.14643 |
|
2)割込みが無いと、入力PINB.1Hとなり放置 PORTB.4がL 間違いでした 入力PINB.1 Lのまま放置 PORTB.4はHのまま。です
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/11(土) 16:04 No.14644 |
|
入力の仕様が今ひとつよくわかりません。 PB1はレベル信号? 30秒とはどの信号のこと? PB0は押しボタン・スイッチ? 図で書いてくれるとわかるかも?
以下は何のための命令ですか? pinb.0=1 pinb.1=1 Pinx.nへの[1]書き込みは、Portx.nの状態を反転するだけです。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/11(土) 18:38 No.14645 |
|
PB1はロジックICからのレベル信号で、外部がON Hレベルは反転しマイコン端子ではLです。 PB0はロジックICからのレベル信号で、割込信号は Hレベルでマイコンへ。 割り込み信号がロジックの別端子をスイッチ。
PB0,1の入力端子には2Kオームで接地しています。
外部がONしている間に、割り込みをした場合に、PORTB.4の出力をLにし、そのまま 待機(任意長さ)。
Pinx.nへの[1]は、マイコン内部に入力抵抗がありGNDする回路かと思っていました。
忙しい所すみません。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/11(土) 19:19 No.14646 |
|
> PB1はロジックICからのレベル信号で、外部がON Hレベルは反転しマイコン端子ではLです。 > PB0はロジックICからのレベル信号で、割込信号は Hレベルでマイコンへ。 > PB0,1の入力端子には2Kオームで接地しています。 そもそもAVRへの入力がロジックICからの[H]or[L]信号なら、プルアップもプルダウンも抵抗は必要ないです。
> Pinx.nへの[1]は、マイコン内部に入力抵抗がありGNDする回路かと思っていました。 AVRにはプルダウン機能は内蔵されていないと説明しましたが・・・ プルアップ機能のみです。
こんな感じの信号ですか? 投稿のプログラムでは、PB4が一瞬[L]になってすぐに[H]に戻るはずです。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/11(土) 19:56 No.14647 |
|
ありがとうございます。 おっしゃる通りで、当初は、外部抵抗器は付けておりませんでした。 ロジック出力でLであろうがHであろうがずうーと繋がっているため。 ダイヤグラムのご指摘通り、割込み時A=1でリターンしてもA=1でDO LOOP内 で保持されていないとも思っています。 PCINTのパルスがモメンタリ(ピン変化時点のみ)なので、DO LOOPはA=1を ラッチにさせ、PINB1がHになったらラッチ解除A=0で割込み待ち がイメージです。 ダイヤグラムでパルスの先がズート30秒まで継続し、待機に続く・・
BASCOMで書けるかどうか?? 外部抵抗をつけたのは、この回路は、外部回路、割込み共、マイコンの電源ONで 同時に起動します。 その場合外部信号は、電源投入時にはH(マイコンではLにインバート)になりますが、 それだと、30秒後にL(マイコンではH)になった後、IF文の検出動作をしなくなりま す。 今は、ピンヘッダで外部を切り離し、マイコンが動いてから、外部をピンヘッダーで 差すと、DO LOOPのIF文判定の通り、動作することから、外部抵抗をつけた次第です。 割込みは機能しませんが、外部だけはOKです。
マイコンのスタートアップのノウハウがあるのでしょうか?
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/11(土) 20:55 No.14648 |
|
プログラムを考える時も、他の人に仕様を伝える時も、タイミングチャートは必需品です! タイミングチャートを見ながらプログラムを追っていけば、PB4の挙動は見えてくるはずです。
> BASCOMで書けるかどうか?? 問題点は、PB1の信号をレベルで見ていることです。 レベルで見てPB4に出力しているので、PB0の変化を捉えてもすぐにPB1の信号で消されることが、タイミングチャートでわかるはずです。
方法は、PB1の信号の[H]から[L]への変化のエッジをプログラムで捉えることです。 立ち下がりエッジを見つけてPB4を制御すれば、PB0の信号による変更は次の立ち下がりエッジまで継続します。 それに関して、信号の速度が遅いなら割り込みなど使う必要はありません。 まして、割り込み内で30mSも待ち時間を入れるのは邪道です!
> マイコンのスタートアップのノウハウがあるのでしょうか? まず、ハードウェア的にAVRもロジックICも各ピンには電源電圧以上の電圧をかけてはいけません。(トレラントを除く) なので、どちらの電源も同時に立ち上げるか、同時が不可能ならフォトカプラなどでアイソレートが必要です。
次に、実行時間に時間差があるならば、電源の状態をポートで監視してから動作を開始するか、相手側の立ち上がり時間をWAIT命令で待つかですね。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/12(日) 05:54 No.14649 |
|
ありがとうございました。 割り込みを使ってエッジ検出することも考え、外部出力をインバータでLにしています。 INTはLOW LEVELと信号変化のみですので Hで割り込めないようなので。 DO-LOOPに入れてIF文での監視ではこの種の問題があろうかと思い、割り込みも用意しでおりました。
ダイヤグラムはオシロを出すのも面倒で、マイコン関係では使っていません。 30msはおまじないです。LCDの駆動もそうですが、ウエイトタイマーを入れないと動きません。元々1msでしたが、上手く動かないので増やしたものです。効果なし 笑 マイコンと言えどもシステム何だなぁと思っています。
外部抵抗もMOSLOGICの入力には終端処理(ターミネーション)としてフローティングは避けています。インピーダンスが高い為。 ドライブ電力も食うので、必要最小限にはしていますが、マイコンはプログラム可能で放ったらかしでも、未使用端子でもOKと思っていたものです。 CONFIGでOUTPUTに設定して置いた方が無難なんでしょうか?
真空管では、高周波を扱っており、終端とバイアス方式にいつも悩んでいます。笑
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/12(日) 10:03 No.14650 |
|
> 割り込みを使ってエッジ検出することも考え、外部出力をインバータでLにしています。 > INTはLOW LEVELと信号変化のみですので Hで割り込めないようなので。 どこにそんなことが書いてありますか?
> DO-LOOPに入れてIF文での監視ではこの種の問題があろうかと思い、割り込みも用意しでおりました。 「この種の問題」とは何ですか? メインルーチンの巡回速度より早いパルスは捉えられませんが、30msも待ちを入れていい信号なら問題なく見つけられます。
> ダイヤグラムはオシロを出すのも面倒で、マイコン関係では使っていません。 この様なシーケンスの動きは普通のオシロでは見つけられず、高性能なストレージ・オシロかロジック・アナライザでないとみられませんね。 この様な機器がなければ、タイミングチャートを書いてプログラムとにらめっこをするのみです!
> 30msはおまじないです。LCDの駆動もそうですが、ウエイトタイマーを入れないと動きません。 おまじないで解決するような物は、いずれ弊害が出ますよ! LCDも内部はマイコンと同等なので、マニュアルに沿った内部処理の待ち時間を入れてやらないと、動作しないのは当たり前なのですが・・・
> CONFIGでOUTPUTに設定して置いた方が無難なんでしょうか? 先にも説明しましたが、AVRの未使用ピンは入力に設定して内蔵プルアップ抵抗をONにするのがいいです。
まず、メインルーチンで信号のエッジを見つける方法を考えてみてください。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/12(日) 10:43 No.14651 |
|
1.BASECOMのINTX のマニュアルにありました。 LOW LEVELのベタ状態か波形変化かのいずれか。 2.Do-LOOP内の見回りでタイミングを逸することもあり、外部をINT割込み にすることも考えていました。 3.高性能ではありませんがストレージはあります。 4.マイコンの立ち上がり検出レベルは判らず、昔ながらに立ち上がり波形を歪ませようかと思っていました。 5.LCDとマイコンの組み合わせを作っておりましたが、LCD通信との初期には マイコン側を黙らせる方法でいつも使っております。 夜 夢の中でIF文の処理でPB.4=0:A=0にしていたことに気づき、修正した所、 PCINT割込みでラッチが出来ました。
問題は、外部とマイコンを同時に起動した時には、その次の待機後の動作が行わないことです。 仕方ないので、マイコンを先に起動し、ペンヘッダで差し込む方式にしています。泣 電源投入後のこの問題 いつも悩まされます。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/12(日) 11:21 No.14652 |
|
> 1.BASECOMのINTX のマニュアルにありました。 どれですか? ---------------------------------------------------------------------- LOW LEVEL to generate an interrupt while the pin is held low. LOW LEVEL:ピンがローに保持されている間、割り込みを生成します。
Holding the pin low will generate an interrupt over and over again. ピンをローに保持すると、何度も割り込みが生成されます。
FALLING to generate an interrupt on the falling edge. FALLING:立ち下がりエッジで割り込みを生成します。
RISING to generate an interrupt on the rising edge. RISING:立ち上がりエッジで割り込みを生成します。
CHANGE to generate an interrupt on the change of the edge. CHANGE:エッジの変更時に割り込みを生成します。
Not all microprocessors support CHANGE. すべてのマイクロプロセッサがCHANGEをサポートするわけではありません。 ----------------------------------------------------------------------
私の日本語マニュアルにも、書いてありますよ?
Low Level − INTx ピンがLowレベルで割り込みが発生。 Change − INTx ピンの両エッジで割り込みが発生。 Falling − INTx ピンの立ち下がりエッジで割り込みが発生。 Rising − INTx ピンの立ち上がりエッジで割り込みが発生。
> 2.Do-LOOP内の見回りでタイミングを逸することもあり、外部をINT割込みにすることも考えていました。 それほど短いパルス信号なのですか?
> 4.マイコンの立ち上がり検出レベルは判らず、昔ながらに立ち上がり波形を歪ませようかと思っていました。 ちょっと意味がわかりません・・・
> 5.LCDとマイコンの組み合わせを作っておりましたが、LCD通信との初期にはマイコン側を黙らせる方法でいつも使っております。 これも意味がわかりません。 そのような事例が他のサイトにもありましたか?
> 問題は、外部とマイコンを同時に起動した時には、その次の待機後の動作が行わないことです。 > 仕方ないので、マイコンを先に起動し、ペンヘッダで差し込む方式にしています。泣 ですから、それはプログラムで回避できると思いますよ。
> 電源投入後のこの問題 いつも悩まされます。 回路設計の視点が違うのだと思います。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/12(日) 11:56 No.14653 |
|
以前にも書きましたがマイコンは奥深いと思っている所以です。
割込みはPIN変化 PCINTは、STATUS設定はなく、INTXはCONFIGで事前に指定有り。 大体、PIN変化割込みを使ってます。
昔のLSIは、波形の尖がりを気にしてましたね。 不要輻射がFCC,ECで問題になり、四苦八苦を思い出してます。
LCDの話はサイトとかでなく、トラブルシューティングですね。 安物のLCDが高速ではなく、のんびりマイコン側で待ってあげているんですね。
電源同時投入を頻繁にする場合は、マイコン側で制御端子を設けスレイブ側との タイミング調整してます。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: O-Family ..2020/07/12(日) 12:32 No.14654 |
|
> 以前にも書きましたがマイコンは奥深いと思っている所以です。 回路設計屋さんでマイコンは嫌いだという方によくありがちな・・・ ロジックICで遅延回路やラッチ回路を組むのと同様に、ICのマニュアルを読むのとマイコンの言語マニュアルを読むのは同じだと思うのですけどね? ロジックICが行う動作をプログラムという文章で表現するだけのことで、設計手法は同じだと思っています!
> 割込みはPIN変化 PCINTは、STATUS設定はなく、INTXはCONFIGで事前に指定有り。 > 大体、PIN変化割込みを使ってます。 使用されているなら、割り込みが発生しない原因もわかると思うのですが・・・
> 昔のLSIは、波形の尖がりを気にしてましたね。 > 不要輻射がFCC,ECで問題になり、四苦八苦を思い出してます。 マイコンでも高速な動作をさせると、配線や終端で異常動作が起きるのは同じです。
> LCDの話はサイトとかでなく、トラブルシューティングですね。 > 安物のLCDが高速ではなく、のんびりマイコン側で待ってあげているんですね。 それは、電源の立ち上がりが悪い問題で、マイコンのリセットが先に解除されるかLCDの立ち上がりが先かという所だと思いますよ。 それぞれのデバイスのマニュアルの初期化時間を守っていれば、起きないことだと思いますけどね。
> 電源同時投入を頻繁にする場合は、マイコン側で制御端子を設けスレイブ側とのタイミング調整してます。 でしたら今回も同様に回避できると思いますし、プログラムでなんとでも処理できると思いますよ。
|
|
|
Re:ATINY13Aの割込み発生しません |
引用 |
投稿者: 認知はじまり ..2020/07/12(日) 13:02 No.14655 |
|
いろいろありがとうございます。 LSI回路設計のハード屋、ソフト屋、実装屋の文化なんですね。 使い勝手の責任のなすり合い。 デジアナ混載コアとペリフェラルデバイスとボード遅延、バウンス特性。 今回も、予めINTxを止めても良いようにPB.3にPCINTを割り付けようと 思っていました。 会社ではマイコン屋さん亜流でしたね。 昔は遠くなりにけりです。 では、また精進します。
|
|
|