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

No.14935 への▼返信フォームです。
 
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のレジスターが無いよと言うエラーになります。” これなのですね。 本当にありがとうございました。 感謝いたします。



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