2011年
3月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2011-03-07 整数型のくせ

_ AVRモーター制御

GPIBからステッピングモーターを制御していたのだが、これが微妙にうまく動いていなかったので、その原因を探っていたら、予想外のところが引っかかっていた。モーターでバルブを開ける時には、30000パルス送っていて、閉めるときには確実にその一割増しにしていた。そのとき、開けることはできるのだが、閉めることができない。最初は、モーターの指定とか、排せんの異常を疑っていたのだが、いろいろと調べていると、パルス数を少なくすると動くことが分かった。AVRの中のプログラムをどのように書いたか忘れてしまったが、整数型を使っていた気がする。そういえば、2^{15}は32768ので、2byteを使ったsigned intだと、-32768から+32767まで表現できる。閉めるときには、一割増しにしているので、33000パルス送ると、ぎりぎりでこの範囲を越えることになる。これがうまくいっていなかった原因だった。そこで、開ける時に29000パルスにしたら、無事に動くようになった。なかなか難しいな。