今使っているのが、PIC16F678 ROMが2Kしかありません。
まだ、全部の機能が入っていないのに、RAM 93%、ROM 86%とひっ迫してきました。
XC8も有料版だと劇的に違うらしいのですが、そんな余裕はないので、
なんとか、フリーのコンパイラを探してみました。
すると、mikroCと言うのが、デモ版でも2Kまでコンパイル出来るらしいというので
さっそく、試してみました。
今のソースを入れてみたら、エラーの嵐。
ビット型が無いので、TXIFは、PIR1.TXIF と言う風に書かないとダメなのです。
ま、これは仕方ないので、どのレジスタなのか確認しながら
書き直せば良いだけです。
あとは、Configとか、設定でやらないといけないとか、
いろいろ有りましたが、ちょっと修正するだけでいけそうです。
あらかた、エラーが無くなってきたのですが、
例のシリアル送信の関数でこんなエラーが出ました。
Reentrancy is not allowed: function 'serial_tx1' called from two threads com.c
んー、リエントラントになってないか...
確かに受信割り込みの中からもACK返答で使ってるからなぁ。
でも、こんなエラー XC8では出なかったし。
と言うことで、文法的には XC8 より mikroCの方がチェックが厳しいのかも知れません。
ただ、今回のように半二重通信の場合、送信中に受信は出来ない訳で、実際には問題有りません。
Warning ウォーニングでも良かったんじゃないかと思ってしまいます。
ま、それらも別関数を作って、エラーが無くなりましたが、
結局RAM領域がオーバーフローしてしまいました。
えー、ダメじゃん。
XC8よりコード効率が高いかと思ったのですが、RAMが溢れては仕方有りません。
んー、やっぱりライセンス料払わないとダメかなぁ。
まだ、全部の機能が入っていないのに、RAM 93%、ROM 86%とひっ迫してきました。
XC8も有料版だと劇的に違うらしいのですが、そんな余裕はないので、
なんとか、フリーのコンパイラを探してみました。
すると、mikroCと言うのが、デモ版でも2Kまでコンパイル出来るらしいというので
さっそく、試してみました。
今のソースを入れてみたら、エラーの嵐。
ビット型が無いので、TXIFは、PIR1.TXIF と言う風に書かないとダメなのです。
ま、これは仕方ないので、どのレジスタなのか確認しながら
書き直せば良いだけです。
あとは、Configとか、設定でやらないといけないとか、
いろいろ有りましたが、ちょっと修正するだけでいけそうです。
あらかた、エラーが無くなってきたのですが、
例のシリアル送信の関数でこんなエラーが出ました。
Reentrancy is not allowed: function 'serial_tx1' called from two threads com.c
んー、リエントラントになってないか...
確かに受信割り込みの中からもACK返答で使ってるからなぁ。
でも、こんなエラー XC8では出なかったし。
と言うことで、文法的には XC8 より mikroCの方がチェックが厳しいのかも知れません。
ただ、今回のように半二重通信の場合、送信中に受信は出来ない訳で、実際には問題有りません。
Warning ウォーニングでも良かったんじゃないかと思ってしまいます。
ま、それらも別関数を作って、エラーが無くなりましたが、
結局RAM領域がオーバーフローしてしまいました。
えー、ダメじゃん。
XC8よりコード効率が高いかと思ったのですが、RAMが溢れては仕方有りません。
んー、やっぱりライセンス料払わないとダメかなぁ。