USART経由でAtmega32(マイクロコントローラー)から2進数を受け取り、それを出力に出力するプログラムをPythonで作成しました。
一方、My Atmega32 は、割り込みの発生時に PINA を読み取り、その値を USART を使用してコンピューターに送信します。
これは私のpythonプログラムです:
>>> import serial
>>> ser=serial.Serial ('COM3')
>>> ser.open()
>>> while(1):
ser.read()
( 700000111
に等しい)の方法で PINA ピンを接続すると、Python で以下の出力が表示されます。
'7'
'7'
'7'
'7'
'7'
'7'
.
.
.
しかし、( 13510000111
に等しい)ようにPINAピンを接続すると、pythonで以下の出力が表示されます。
'1'
'3'
'5'
'1'
'3'
'5'
'1'
'3'
'5'
'1'
'3'
'5'
'1'
'3'
'5'
'1'
'3'
'5'
.
.
.
上記のように、3 行で135が出力されます。なんで?
参考までに:これは、CodeVisionでAtmega32用に作成したプログラムです。
interrupt [EXT_INT0] void ext_int0_isr(void)
{
printf("%d",PINA);
}
更新: 回答で提案されているように、ATMEGA 側と Python 側のプログラムを変更します。
私のAVR割り込みルーチン:
interrupt [EXT_INT0] void ext_int0_isr(void)
{
printf("%d",PINA);
printf("%d\n",0);
}
そして、これはpythonでの私の出力です:
>>> while(1):
ser.readline()
'35\n'
'135\n'
'135\n'
'135\n'
'135\n'
'135\n'
'135\n'
'agi\x16agi\x16\xff135255\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'1350\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
'135255\n'
'1350\n'
'135255\n'
ご覧のとおり、出力は AVR コードと Python コードから期待したものではありません!