| TOP | ホーム | ページ一覧 |

No.14623 への▼返信フォームです。
 
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
  .gif / 8.8KB

> 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
  .jpg / 53.4KB

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を割り付けようと
思っていました。
会社ではマイコン屋さん亜流でしたね。
昔は遠くなりにけりです。
では、また精進します。



名前
Mail   URL
文字色
タイトル   簡単タグ入力
添付   >>お絵かき
フォームに保存  プレビュー      削除キー