土日でプログラムリストやマイクロチップのPDFを見て、
うまく動作していない部分の検討をして本日テストした。
結果としては、色々試したけど駄目だった。問題点はこの
CPUの仕様として理解して回避する事にした。
・起こっていると考えられる問題点
DMA割り込み処理中に何か条件(たぶんUSB割り込み)が
発生すると「DMA割り込み処理を中止」し、その後で再度
「DMA割り込み処理を最初から実行」する。「実行」後は
先に「中止」した処理はたぶん実行しない。
・回避法
DMA割り込み処理中は同じプログラムを2回実行しても
トラブルが発生しない様に割り込み中に変数は変更せず
実行済フラグを立て、割り込み処理後にメインループで
フラグを確認して変数計算を行う。
割り込み関係なのでプログラム上で何らかの回避方法が
ありそうだが、テストした範囲と資料の範囲では解らない
ので仕方がない。
この感じだと、元々のサンプルプログラムも同じ症状だと
推測されるので、サンプルプログラムを改造する人は注意
して頂きたい。
0 件のコメント:
コメントを投稿