Microchip UniversityのUARTをやってみる

PIC

これの続き。ピンヘッダを手配して半田付けして、やってみる。

まあ、動画の通りにやる。Part 4のファイルapp.c, app.hをちゃんとLab.Xディレクトリにコピーする。これをはしょるとコンパイルが通らない。
また、途中、app.c のここが動画とは異なっているが、とりあえずはそのまま。


あと、C99だとコンパイルが通らないのでC90にするのも同様。こんな感じ。

その結果、コンパイル・書き込みが成功したので、TeraTermでやってみると・・・

また文字化け。これは、Microchip Universityではなく新しいPIC本でやってた時と全く同じ現象。しかもハードウェアは、その時はPIC18F47Q10と秋月FT234Xだったが、今回はPIC16F1619とAC00393だから全く異なる。ハードが異なるのに全く同じ現象だから、明らかにソフトが原因。

うーん。それではさっきの、app.c を動画の通りに書き直してみるか。よく見たら、2か所だった。こういふうに直す。

そしてコンパイルしてみると、ちゃんとコンパイル・書き込みが正常に終了する。
で、TeraTermは・・・・やはり同じでダメであった。失敗だ。
ハードウェアの写真はこんなふう。



<追記>、「諸悪の根源、stdio
まあ、原因はわかってるんですけどね。app.c にあるこの部分。

結局これも、printfすなわち標準入出力、stdioを使ってるわけで、だから文字化けの様子も今までやったのと全部共通しているという。
さらに、stdioはブラックボックスだから、その外で何をやっても無駄なのも今までやった通り。本当に諸悪の根源だなこういうの・・・しかし、ググってもそういう例が現れないのも不可解。?(^^♪
たぶん、世界で自分一人だけ出てる症状なのか???wwwこういうのも、すごーーーーく慣れっこ(^^)/ 楽しくなってきたよ(爆


※追記、2024.2.27
少し前のを見直すと、こういうのがある。古いPIC本で、温度インジケータをやったときにはTeraTerm上にちゃんと文字が出ている。これを見返すと、そこを見ればわかるように、PIC古い本のINDICATORにある、p.543 低レベル入出力関数があったのでこれを貼ってみる
void putch(unsigned char Data){
while(!TX1STAbits.TRMT);
TX1REG = Data;
}
その結果・・・コンパイルが通らなかった。あえなく敗退(^^


※追記、2024.2.29
ついにこのように問題が解決したので、それに基づいてやり直してみる。
まずは、前にやったプロジェクトの、プロパティのチップ名だけをこのように、PIC16F1619からPIC16F18446に直してみると・・・

結局コンパイルが通らない上、どうなったかがわからなくなったので、全部やり直す!
動画を最初から端折りながら全部見直して、全部動かして、ようやくUARTの回まで来た。ここまで来ると、たぶんチップ名が変更になった影響でコンパイルが通らないので見直す。

前にやった時と同様、app.cを書き直すが、今回は原因がわかっていてしかも前と症状も異なる。
このように、チップが変更になった影響で、UARTの名前がEUSARTからEUSART1になったから、そのように直す。

そして、一番肝心な、RS-232Cの、TxD/RxDの配線がちゃんとクロスするように再チェック!こんな感じ。

その結果、

ついに、TeraTermに正常に文字が表示された。Hまたはhをキーボードから入力したときだけ、Hello World!が出力される。成功だ!

コメント

タイトルとURLをコピーしました