ATtiny44でのAD変換で困っています。
投稿者: ZeeOne
|
2023/07/09(日) 11:20 No. 14935 引用 |
|
このサイトで勉強させていただいております。 ずっとLED点滅程度だったのですが、やりたいことができ、ATtiny44で初めてAD変換に挑戦してみました。 LED点滅まではうまくいき、次のステップとして以下のようなコードをコンパイルしたところ、多くのエラーが発生してお手上げになっております。 お知恵を拝借できませんでしょうか?
$regfile = "ATtiny44.dat" $crystal = 1000000 Config Adc = Single , Prescaler = Auto Dim A As Word Do Start Adc A = Getadc(2) Print A Waitms 100 Loop End
エラーですが、以下のような内容で、そもそもこのチップでは使えない機能を使おうとしてしまっていることに起因しているようなのですが。
Error : 202 Line : 1 .EQU not found, probably using functions that are not supported by the selected chip [UBRR] , in File : C:\AVR\Code\Attiny44 ADC.bas Error : 202 Line : 1 .EQU not found, probably using functions that are not supported by the selected chip [UCR] , in File : C:\AVR\Code\Attiny44 ADC.bas Error : 1 Line : 11 Unknown statement [.EQU not found for:USR] , in File : C:\AVR\Code\Attiny44 ADC.bas Error : 387 Line : 11 IO address must be in range [0-31] [USR] , in File : C:\AVR\Code\Attiny44 ADC.bas Error : 202 Line : 11 .EQU not found, probably using functions that are not supported by the selected chip [UDR] , in File : C:\AVR\Code\Attiny44 ADC.bas
コンパイラは無償ダウンロードのver. 2.0.7.9です。なおBASCOMのサイトにあるAD変換のサンプルコード(https://avrhelp.mcselec.com/index.html?config_adc.htm)は問題なくコンパイルできました。 何かアドバイスいただければ幸いです。 よろしくお願いいたします。
|
|
Re:ATtiny44でのAD変換で困っています。 |
引用 |
投稿者: O-Family ..2023/07/09(日) 12:18 No.14936 |
|
ZeeOneさん、こんにちは。
ATtiny44はUSART(シリアル通信機能)が付いていません。 USIのみです。
OPEN命令で、任意のポートをソフトウェア・シリアル通信用に設定するか、「SEROUT」命令で任意のポートを使用したソフトウェアUARTを使用してください。
$regfile = "ATtiny84.dat" $crystal = 1000000 Config Adc = Single , Prescaler = Auto Start Adc Dim A As Word
Open "comB.0:9600,8,N,1" For Output As #1
Do A = Getadc(2) Print #1 , A Waitms 100 Loop End
|
|
|
Re:ATtiny44でのAD変換で困っています。 |
引用 |
投稿者: ZeeOne ..2023/07/09(日) 15:59 No.14937 |
|
管理人様 早々にご教示いただきありがとうございました。 動作しました。きちんと確認するには、PCのシリアルポートにつながないと理解しましたが、今回はとりあえずシミュレータで変数Aの値が無事変化することで確認できました。 表示方法ですが、今までよくあるキャラクタLCDによる方法(LCDコマンド)しか使ったことがありません。今回は最終的には文字出力が不要なので、結果はシミュレータで見ればいいはずと思ってシリアルポートのことは何一つ頭の中にありませんでした。正直なところ、なぜシリアルポートの設定が必要だったのか未だに理解できておりません。 よろしければ、この点もご教示いただけませんでしょうか? 何度も申し訳ございません。
|
|
|
Re:ATtiny44でのAD変換で困っています。 |
引用 |
投稿者: O-Family ..2023/07/09(日) 17:31 No.14938 |
|
> 正直なところ、なぜシリアルポートの設定が必要だったのか未だに理解できておりません。 回路の動作確認やデバッグの際に、LCDなどの表示器やシリアルターミナルがあると、格段に作業効率がよくなります。 机上やシミュレータでは、思い込みや割り込みなどの複雑に絡んだ動作不良がなかなか見つけられないこともあります。
そんなときに、変数の内容やフラグの変移をリアルタイムに表示させることで、発見が早くなります。 私は表示器やターミナルの無い製品を開発する際にも、必ず空きポートをシリアルターミナルに使ってデバッグします。 動作状態がリアルタイムの数値で見られるのは、安心で確実ですからね。
ATtiny44にはUSART回路が搭載されていないので、Mega328などの参考例をそのまま移植すると、PRINT命令を書いた時点でUSARTのレジスターが無いよと言うエラーになります。 BASCOMはUSART回路が無いAVRに対しても、ソフトウェアUARTが使用できるので簡単で便利です。 USB-シリアル変換のアダプターは必需品です。 回路やプログラムが複雑になってくると、必ず恩恵を受けると思いますよ!
|
|
|
Re:ATtiny44でのAD変換で困っています。 |
引用 |
投稿者: ZeeOne ..2023/07/09(日) 19:43 No.14939 |
|
管理人様 ”PRINT命令を書いた時点でUSARTのレジスターが無いよと言うエラーになります。” これなのですね。 本当にありがとうございました。 感謝いたします。
|
|
|