AVRマイコン総合スレ Part41
レス数が1000を超えています。これ以上書き込みはできません。
>>580
おまえらの世代はパンチカードだったかもしれんが、
入門者には画面と教えて問題ないだろ >>574
いまいち何やってるのかよく分からないけど
printf_UART()
なる関数を自作するよりかはスマートな方法なのね
たしかにprintf()で書いていた方が
UARTに出力するかLCDに出力するかそのときに応じて
ソースコードをほとんどいじらずに瞬時に対応できるよね >>584
マニュアルちゃんと読もうぜ
avr-libcのマニュアルに丁寧な解説付きで書いてあるぞ 久しぶりにマイコンいじった。mega3208ってやつ
これ8bitAVRコアにUC系のペリフェラルっぽいな xmega系列になって従来のmega/tinyとちょっと変わったんだ。
UC系の周辺と揃えようって意思はあったんだろうね。
mega3208は名前こそmegaだけどxmega系の子孫なのよ。 同じ処理を、3種類の環境でコンパイルしてみた。
cc5xは、制限の多いコンパイラで、ページを自分で割り付けなければ
ならないのと、固有の構文を多用する。
xcは、proバージョンでどのくらいコードがスリム化するんだろう?
gccベースという使いやすさと、PIC以外でも使えるので価格が折り合えば使いたいな。
avrgccは、データメモリとレジスタの転送でコードが膨らんでいるけど、対CPUクロックで考えると速度的に問題ないはず。要求プログラムメモリは要注意。PICは、word,avrは byteで単純比較できないけどね。
PIC cc5x (PIC16F18313)
; RAM usage: 51 bytes (11 local), 205 bytes free
; Maximum call level: 4 (+3 for interrupt)
; Total of 1027 code words (50 %)
PIC xc8 free (PIC16F18313)
Memory Summary:
Program space used 5ECh ( 1516) of 800h words ( 74.0%)
Data space used 41h ( 65) of 100h bytes ( 25.4%)
avrgcc (atmega48)
Program Memory Usage 3586 bytes 87.5 % Full
Data Memory Usage 42 bytes 8.2 % Full ATmega328PのUARTポート(RX, TX)とUSBシリアル変換器
http://akizukidenshi.com/catalog/g/gK-06894/
のUARTポート(TX, RX)をつないでPC上で立ち上げたTera Termをモニタ代わりに使用してる。
これはこれで問題無くモニタ出来てるんだけど他に問題があって
AVRの電源を切ってもAVRが稼働し続けてることに気付いた。
はじめ何が起きてるのかよく分からなかったけどテスターを当てていくと
USBシリアル変換器のUARTポートからAVRのUARTポートに電気が流れて
その電流が寄生ダイオードを経由してかAVRの電源側に回り込んで結果的に
AVRが稼働し続けてるっぽいことに気付いた。
大元たどるとパソコンのUSBポートの5Vが電気の供給源ってことになるね。
この状態でAVRの書き込みも出来るから恐ろしい。
AVRのUSBポートから流れ込んできた電気でAVRが稼働するってのも
AVRにとってあまりよろしくない状況だと思うんだけど何か解決方法ってあるかな? そもそも電源の入っていないマイコンにUSBシリアル変換を接続しっぱなしにするのが間違った使い方。根本的な解決方法はない。
ポートに抵抗入れる、AVRの電源ラインにシャント抵抗を入れて電圧を下げるなどの対症療法はある。
しかし残留電圧でヒューズがリセットされないためデバッグワイヤが解除できない等の不具合が発生するので、その辺を理解して使うこと。 >>591
AVRに限らず禁止事項だよ。うっかりするとチップ内の保護ダイオードを壊したり、
外部にレギュレータがあると、こいつを破壊する。
とりあえずの対策としてはFT232XのRESET#をLowにしておけばOK
ATmegaの余っているポートをPull Downしておいて、ここにRESET#をつないでおく。
ATmegaの電源On時に、このポートをHiにしてRESET#を解除すれば普通に使えるし、
電源を落とせばFT232XはResetステートに入る。
FT232XはReset#がLoになっている間、UARTポーtははTri-state、入力は内部200kΩで
プルアップされる(データシートVer. 1.2だったらp. 23)
これで、ほとんどの場合問題はないが、Resetステートの時にUARTピンが浮くので、
気になる場合は弱く(高抵抗で)プルダウンしておけばよい。 >>591
根本的にはAVRの入力に74VHC04のような入力保護ダイオードが入っていない
バッファを入れる。インバータなので2段入れる。 ↑が正解
不都合だけじゃなく、流しすぎるとデバイスがお釈迦になるよ
オレは↓を使ってる
http://akizukidenshi.com/catalog/g/gI-09418/ 小信号ダイオードはさんでオープンドレインもどき接続にして
USBシリアルからのHレベルを遮断すればとりあえず大丈夫なんじゃね >>592
>>593
AVR書き込むたびにUSBケーブルも抜き差しするの面倒くさくてさぼってたけど
やっぱこういう使い方禁則事項だよね^^;)
> FT232XはReset#がLoになっている間、UARTポーtははTri-state、入力は内部200kΩでプルアップされる
FT232XのRESET#ピンを制御するのはいい方法かも
ただ細かいことを言うとまっさらな状態のAVRに書き込もうとしたときは
RESET#ピンの制御は無理になるかな。
初回限定のほんとどうでもいい細かいことだけど。
>>595
> 74VHC04のような入力保護ダイオードが入っていないバッファを入れる
あ、この方法もいいね。ものぐさな自分にはぴったりの方法かもしれん。
VHCシリーズを選べば入力に保護ダイオードが入っていないことは
確約されるんだっけ? >>598
VHCシリーズはVCCに関係なく入力電圧の上限が5.5Vまで印加可能だったと思う
簡易電圧変換なんかにも使われるよね >>599
VHC, LVC, LCX, VCXは入力から電源にむけて寄生ダイオードが無いから
電源に電流が流れることが無いのね
https://toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p171-172.pdf
一つ勉強になった
ありがとう float型の変数を文字列に変換する際の定番の sprintf はメモリを馬鹿食いするから
次点の dtostrf を使ってみたんだけどこれも結構メモリ馬鹿食いするんだよね
もうちょい軽く済ます方法って無いかしらん >>601
float使わずにintで固定小数点数として格納する 誰しもが通る系の道よ…
固定少数にしても表示が遅い、間に合わないってんで
LCD表示ルーチンの改良してみたり
割り込みでマルチスレッド的に出来ないか?
とか
アセンブラで書くか?
とか、やる訳よ… >>602
>>604
その発想は無かったわ
たとえばfloat型数値 3.1415 を小数点第2桁まで文字列にするとしたら
まずこいつをint型にキャストして3を取り出し
(int) 3.1415 → 3
取り出した3を引いて小数点以下を抽出し、
3.1415 - 3 = 0.1415
抽出した小数点以下に100をかけて再びint型でキャストし
0.1415 x 100 = 14.15
(int) 14.15 → 14
3と14を atoi() 使って文字列に変換。ピリオドを間に挟んで結合すれば
文字列 3.14
のできあがり。こういうことか >>607
>>602 >>604 の助言を無視して float で演算してどうするんだ? 30年前だがZ80でどうしてもfloatが使いたくて、MSX-C 買ったらできないでやんの。
しょうがないからアセンブラでやるfloatのライブラリが載ってる本買って、そこだけ関数呼び出し
に書き直してしのいだわ。 sprintfが重いって話だろ?
floatの演算自体は仕方なかろうし、大した負荷じゃなかろう。 まあでも小数2桁って決まってるんなら最初から100倍しておいて整数で演算するわな。 そう考えると、昔のBASICとか優秀だよな
あれしかメモリなかったのに プログラムのフットプリントを意識出来ないのは池沼やで 昔、友人が変数名がアルファベット1文字というVTL系のコンパイラを作っって
私にくれたことがある。
プログラムサイズは512バイト程度だったと思う。
付属のサンプルプログラムが「月面着陸ゲーム」 だった。 Digi-keyにTiny3216¥119が入荷している。 マルツは¥166 マルツってdigikey発注代行だろ?
それでこんなに取るのか
ボリ松もびっくりだな 50円でボッタクリ。
じゃあ、Digikey で買えよ。送料払って。 すぐ欲しい数個で買って
数十百個になったら海外通販使う
新しい品種とかは前者で探すのが困難だけど >>621
どうせ人件費は0円とかいう無職の発想でしょ
親が買い置きした家にある食い物はタダ、みたいな >>625
爺さんしか居ないスレでsyamuなんかわかる奴ほぼいないだろ… 632です。神様、今週ボン円140円で買い戻しさせて下さい! UARTで何かデータを受信したら割り込みを発生するテストプログラムを書いてみた。
volatile unsigned char moji='a';
ISR(USART_RX_vect)
{
char x = UDR0;
while (!( UCSR0A & (1<<UDRE0)));
UDR0 = ++moji;
}
int main()
{
UCSR0B = 0x00;
UCSR0A = 0x00;
UCSR0C = 0b00000110;
UBRR0L = 25;
UBRR0H = 0;
UCSR0B = (1<<RXCIE0) | (1<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);
while(1)
{
}
}
うまく動けばUART経由で一文字打ち込むたびに変数mojiがインクリメントされていきターミナルには
bcdefgh・・・
みたいな感じの文字が表示されてしかるべきなのになぜか
bbbbbb・・・・
といつまでたってもbしか表示されない。なにか設定おかしいところある? >>636
送信完了ベクタが登録されていないので動作がおかしくなっているんじゃない?
送信割り込みを使わないような設定にすれば良いと思う
UCSR0B = (1<<RXCIE0) | (1<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);
↓
UCSR0B = (1<<RXCIE0) | (0<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);
main()関数内に sei(); が無いけど、割り込み発生するの? >>638
> 送信割り込みを使わないような設定にすれば良いと思う
それ!ビンゴだった!
え?どゆこと?
”送信割り込み使う”に設定すると
ISR(USART_TX_vect)
{
}
送信側をきちんと定義してあげないと
ISR(USART_RX_vect)
{
}
受信側の挙動に影響が出るってこと?
sei()はごめん、コピペするの忘れた^^;) >>639
割り込みベクタテーブルの初期値は 0x0000 だったハズ(データシートを読んでみて下さい)
ISR(〜) を定義しないと割り込み発生時に 0x0000 にジャンプする
送信完了→送信完了割り込み発生→ベクタテーブルを参照して 0x0000 にジャンプ(見かけ上、リセット動作となる)
送信完了割り込みが必要無いのなら空の ISR(USART_TX_vect) {} を定義するよりも、送信完了割り込みを禁止したほうがコードサイズが小さくなるし余計な割り込みも発生しませんよ >>639
補足
>受信側の挙動に影響が出るってこと?
ISR(USART_RX_vect) 内で送信処理しているでしょ
送信処理が完了すれば ISR(USART_TX_vect) に飛ぼうとするので結果として 0x0000 にジャンプします >>640
そういうことなのね
UARTで一文字送信するたびにリセットボタンを押してたようなものか
どうりで変数が常に初期化されるわけだ
こういう挙動ってちゃんとしっとかんとあかんね(´・ω・`) >>640
横からだけど、なんか勉強になった。ありがとう ATMEGA328P使って環境モニターっぽいことやってる
常時起動してるのは電池の無駄だからスリープ使ってるんだけど
スリープ復帰後にI2Cセンサとの通信ができなくなることがある。
詳細に調べてみるとスリープモードが
・パワーダウン
・パワーセーブ
・スタンバイ
のときはスリープ復帰後にI2Cが使えない(通信途中でフリーズする)ことが分かった。
ただ唯一、一番省エネ効果が低い
・アイドル
に設定するとスリープ復帰後もI2Cは問題無く使える。
I2Cってディープスリープ状態から復帰後は使えなくなるんだっけ? そんな話聞いたことないし、そうだとすれば大炎上してるよ。
ソース晒してみなよ。 もしかしてTWIの電力削減レジスタ弄って、なおかつウェークアップ後初期化してないとか? >>646
全部掲載はさすがに足りないから無理だけど要所くらいなら・・・
ちなみにTWIの電力削減レジスタとか難しいことは一切やってないよ
やってることだけどRTC使って一定時間ごとにAVRに割り込み(INT0)かけて起動してデータセーブ。
セーブが終わったらスリープして待機。
具体的にはRTC使ってINT0ピンをLowに引っ張って割り込みをかけてやる。
RTCの仕様でそのままLowに引っ張り続けるからI2C経由でAVRからRTCに命令出してHighに戻すよう命令
(release_interruption関数)。
問題はこのI2C通信で発生するっぽい。パワーダウンスリープから目覚めた直後だとI2C通信の途中で応答不能になり
アイドルスリープから目覚めた直後だと問題無く動作する。スリープを一切使わない場合もむろん問題無く動作する。
↓ちなみに以下ソース #include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include "FatFs/ff.h"
#include "FatFs/diskio.h"
volatile UINT Timer;
ISR(TIMER0_COMPA_vect)
{
Timer++;
disk_timerproc();
}
// 以上FatFsで必要なタイマー割り込み
volatile unsigned char int0_cnt;
ISR(INT0_vect)
{
int0_cnt--;
release_interruption(); // ←I2Cで通信しようとするこの関数で止まる
}
volatile char usart_recvData[256];
volatile unsigned char usart_recv_write;
ISR(USART_RX_vect)
{
char x = UDR0;
usart_recvData[++usart_recv_write] = x;
}
int main(void)
{
TIMSK0 = _BV(OCIE0A);
TCCR0A = _BV(WGM01);
TCCR0B = 0b101;
OCR0A = F_CPU / 1024 / 100 - 1;
EICRA = (0<<ISC01) | (0<<ISC00);
EIMSK = 1<<INT0;
UCSR0B = 0x00;
UCSR0A = 0x00;
UCSR0C = 0b00000110;
UBRR0L = 25;
UBRR0H = 0;
UCSR0B = (1<<RXCIE0) | (0<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);
sei();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
int0_cnt = 5;
while (1)
{
if ( int0_cnt == 0 )
{
int0_cnt = 5;
save_data();
}
sleep_mode();
}
} 俺は小心者なので、
割り込みハンドラの中で通信ルーチンコールとか、
怖くて出来ない
スタック食い潰しの原因追求で泣きそう
になったこととかあるし… INT0割り込み→i2cでRTCにINT0ピンHIGH指示→割込処理から抜ける。でもこのときRTCはまだINT0ピンHIGHの処理完了してないので、またINT0割り込み入る。AVRはi2c始めようとするけどRTCは前の指示実行中なのでしらんぷり。 >>INT0ピンHIGH指示
の後に割り込みをすぐに抜けずに、INT0ピンがHiになるのを待ってから抜ければOKってことか。 ちょっと待て
EICRA = (0<<ISC01) | (0<<ISC00);
ってなんぞ?
これじゃ
EICRA=ISC01|ISC00
と同じだから、立ち上がりトリガにならんか?
(他もだけど…) >>655
ならない。無意味ではあるけど…
普通は
EICRA &= ~(_BV(ISC01) |_BV(ISC00) );
かな。
_BV() 使ったり、直接シフトしたり一貫性がないとは思う >>656
ちょっと興味あったので・・・
DDRA = (0 << PA0) | (0 << PA1) ; は
out DDRA, zero
ふむふむ
DDRA |= (0 << PA0) | (0 << PA1) ; は
in tmp, DDRA
out DDRA, tmp
うーむ -Os オプション付けても刈取らないのね・・・
(atmel stuido 7) 意図して読み出した1を書き戻すことも有るからね。バグになっちゃう。 秋月の通販サイトみたらDIPのAVRマイコンATMEGA1284P−PUが売ってた。
750yen
AVRマイコンの未来は明るい。 >>660
http://akizukidenshi.com/catalog/g/gI-04461/
発売日 2011/01/04
128Kバイトもの巨大なプログラムメモリと、16Kバイトもの広大なSRAMを内蔵しています。
ちなみに
http://akizukidenshi.com/catalog/g/gI-13921/
発売日 2019/02/22
プログラムメモリ:256KB RAM:28KB >>664
DIPだからクソデカくて面白いって話なのにSMD貼られても…… >DIPだからクソデカくて面白いって話
それどこに書いてる? >>665の脳内、しかも17:37:05頃のこと。 フラッシュを10,000回書き換えて
書き込み不能にした強者っているのかな >>669
オレもどっかで見た。だけどフラッシュではなくEEPROM(PICの) >>670
http://madlabo.oops.jp/MAD/0026/0026.htm
ここのオッチャン、リレー式計算機とか作ったり色々とやってるな
しかし電子工作者のこの文体のテンション、ついていけない… >>672
罐パッケージのAVRがあるのかと思ったw > フラッシュを10,000回書き換えて
> 書き込み不能にした強者っているのかな
何回書きかえたら壊れるか(書けなくなるか)に関しては
実際に試して確認した情報を どっかで見たな ESP-WROOM-02にリセットボタンを付けて連続でパチパチとリセットしてたら、
テレビの受信デシベルが低くなって映像が途切れたりした。
2.4Ghzって地デジの電波に影響あるんだな >>678
球状の缶からウニみたいに出てくるリード
誰か作らんかなぁ フラッシュに書き込んだプログラムがいつまで保持されてるのか気になる
たしか100年ぐらいは持つんだっけな?
書き込みを繰り返したやつは酸化膜がやられてて電荷が抜けるのが早くなるだろう >>680
フラッシュは20年や
データシートの表紙みろや ちょっとさっきくしゃみしたら
変換基盤に仮置きしていたATtiny10が全部消えたんだが?
こないだ家電のケンちゃんで書き込み用補助具買ったばかりなんだが?
秋月の10個入り全部消えたんだが?
朝の鼻くそに混ざっていそうなんだが? 小せいのはICでなくお前のケツの穴というオチかい? >>673
缶のオペアンプを開けて中にATtiny85埋め込むか? >>684
バカヤロー鼻くそだって書いてあっだろ!
俺の繊細なケツからあんなもん出てきたらあっという間にパンツ血まみれ SSDなら耐久テストをしたサイトがあったな
東芝製が書き込み禁止にして保護するとか UART経由でターミナルに文字列吐いてからパワーダウンスリープするプログラム作ってみたんだけど、
void uputc(unsigned char x)
{
while( !(UCSR0A & (1<<UDRE0)) )
;
UDR0 = x;
}
ターミナルに表示される文字列の末尾が文字化けしてしまう。
(上記のプログラムは一文字UARTに送信する関数。
これを連続呼び出しすることで文字列をターミナルに送ってる)
パワーダウンではなくアイドルスリープに変更したり、スリープそのものをしないようにすれば
末尾まで正常に表示されることからUARTの送信バッファから文字が全て吐かれる前に
AVRがスリープしちゃってるのが原因じゃ無いかと踏んだ。
だったら送信バッファが空になるまで待てばいいじゃんと思い、
void uputc(unsigned char x)
{
while( !(UCSR0A & (1<<UDRE0)) )
;
UDR0 = x;
while( !(UCSR0A & (1<<UDRE0)) )
;
}
と修正してみたけど変わらなかった。他にも送信シフトレジスタが空になったとされるTXCフラグが1
になるまで待ってみたりしたけど、
while( !(UCSR0A & _BV(TXC0)) || !(UCSR0A & _BV(UDRE0)) )
;
これも変わらなかった。最後の一文字までターミナルに無事送り届けられたタイミングを知るには
どうしたらいいのかな? >>689
AVRのプログラム経験あまり無いけどバッファが空に成った後に空ループ回しながら暫く待ってスリープは試してみた? TXCフラグは割り込みを使用していなければ、
プログラムから動的にクリアされなければならない。
UDR0 = x;
の次に
UCSR0A |= _BV(TXC0);
っていれてみれば? >>690の対症療法でもいいが…そもそも根本的な勘違いがある。TXCフラグの説明読んだか?
『The TXCn Flag bit is automatically cleared when a transmit complete interrupt is executed, or it can be cleared by writing a one to its bit location.』
とある。日本語にすると『TXCnフラグは、送信完了割込みを起こすか、自分で1を書くことで初期化できます。』ということだ
つまり、送信完了割込みを使ってないのならば、自分で毎回クリアしないと、最初に何か送信して空になって1になったら…あとはずっと1のままだ!!!
送信中は0で終わったら1に勝手に変わるとかいう便利なものではないぞ??? なぜ動かないんだ!MPUのバグか?
って時の99%は、データシートをちゃんと読んで
無かった自分のせい どうでも良いけど、なぜ
loop_until_bit_is_clear();
使わないんだ? >>690
↓みたいにforループ1000回入れてみたら最後までターミナルに正しく表示されるようになったから
たぶん送信バッファを確実に空にするまで待つ、という戦略であってると思う
void uputc(unsigned char x)
{
while( !(UCSR0A & (1<<UDRE0)) )
;
UDR0 = x;
for(int i=0;i<1000;i++)
;
}
>>691
ほ、ほんとだ!
void uputc(unsigned char x)
{
while( !(UCSR0A & (1<<UDRE0)) )
;
UDR0 = x;
UCSR0A |= _BV(TXC0);
while( !(UCSR0A & (1<<UDRE0)) )
;
}
これでも正しく末尾まで正しくターミナルに表示されるようになった!
>>692
そういうことなのね。自分で1にsetしてやらないと0に戻らないのね。
勉強になった、ありがとうノシ Aliで売ってる1000円以下のJTAGって使い物になる? >>695
for(int i=0;i<1000;i++);
って、最適化したら真っ先に消されるコードだろ? >>697
intの前に「volatile」付ければ?
>>695
問題解決良かったね。
>>692
AVR初心者として参考になった。
ありがとう。
>>693
そう。焦れば焦るほどバグ、つまり自分のミスに気付かない。
俺はプログラミングは己れの煩悩を取り払う能力を養う最強の修行法だと解ったわ。 >>695
送信後のウエイト処理で見ているフラグが違うと思います。
while ( !(UCSR0A & (1<<TXC0)) );
こうじゃないですか? >>702
すんません
凡ミスしてた
> while ( !(UCSR0A & (1<<TXC0)) );
そうです、それで正しいっす 所詮マクロだし推奨するのは構わんが強制することでもないべ AVRマイコンはプログラムメモリの自己書き替えはブートローダー用の領域に書き込まれた
プログラムからしかできないんだな。アプリケーション用領域に書き込まれたプログラムからだと
書き替えのための処理が無視される。良く読めばデータシートにも書いてある。
PICマイコンからの類推で当然できるものだとおもってたから意外。 デバイスによる。
ブートローダ領域の無いものはどこからでも実行できる。 割り込みに呼応する関数は一般的にmain関数の前に記述するわけだけど、
volatile unsigned char x;
ISR(USART_RX_vect)
{
x = UDR0;
}
int main()
{
・・・
}
割り込みに呼応する関数を丸々関連するヘッダファイル(uart.h)に移動してやって
そのヘッダファイルをincludeすれば割り込み処理も忘れずに定義できることを思いついてこうした、
#include "uart.h"
int main()
{
・・・
}
記述もすごくシンプルになって満足していたんだけどAtmel Studioのコンパイラーから3つの警告が出るようになった。
警告 2 type of '__vector_18' defaults to 'int' [enabled by default]
警告 1 return type defaults to 'int' [enabled by default]
警告 3 control reaches end of non-void function [-Wreturn-type]
割り込み処理をまるまるヘッダファイル(uart.h)に移動してやっただけなのになんでこんな警告が出るんだろう? あと話は全く変わるんだけど今ChaN氏のFatFs使ってSDカードに書き込みするプログラム組んでるんだけど
付属のf_puts関数でSDカードにデータを書くのは問題無く出来てるんだけど
もう一つの付属のf_printf関数でSDカードにデータを書き込もうとするとエラーが返ってくる。
原因をしらみつぶしに調べていったところグローバル領域で宣言した配列の要素数がある程度大きくなると
f_printfの方だけエラーが出るっぽいところまで突き止めた。(f_putsの方は要素数によらず常に書き込みに成功する)
具体的にはグローバル領域で、
volatile unsigned char hogehoge[255];
みたいな巨大配列を宣言するとf_printfによる書き込みが失敗する。
配列の要素数を少し減らして、
volatile unsigned char hogehoge[200];
にするとf_printfでも問題無く書き込みできるようになる。
ターゲットはATmega328P。
プログラムメモリもデータメモリも90%以下の値であることは確認済み。
オーバーフローしてるわけではない。
宣言した配列のサイズによってプログラムが異常動作するなんてことはありえるかね? >>709
ビルドログに出てくるデータメモリの使用率はグローバル宣言した変数分のみ。RAMはファンクション内で宣言した変数にも使われるから足りなくなることはある。 スタックもじゃね?
グローバル変数+ローカル変数+スタック≦RAM
でなければならん
アセンブラで書いてないと取りうるスタックの最大量は読みにくい >708
ぱっと見だけど、char xがグローバル変数なのに、グローバル変数として宣言できてないのでは? そもそもヘッダファイルに入れる意味あるのか?
忘れずにと言うが、main関数のあるファイルからしかincludeしないなら、そこに直書きするのと何が違うのか >>708
#include "uart.h" の前かuart.hの中にavr/interrupt.hが無いから。 >>710
>>711
そういうことなのね
コンパイルしてメモリ使用量が100%未満だからといって安心しちゃいけないのか
>>713
volatile unsigned char x;
だけmain関数の真上のグローバル変数領域に移設してみたけど
エラーが出るようになっちゃった
>>716
一応"uart.h"の前でavr/interrupt.hは宣言してあったわ
ヘッダーファイルに割り込み処理を押し込もうとしたのはそもそもの間違いか
下手に楽しようとせずmain関数の上に書くようにするわ
ありがとう >>717
ヘッダーに関数その物を書くのが作法違反っすよ >>717
volatile unsigned char x;
の前で uart.h をインクルードしているのでは?
uart.h の中で変数 x を使うコードが書かれていると、そんな変数知らないとコンパイラに叱られる
一見、すっきりした様に見えるけど、uart,h の中にプログラムコードを書くのは違うような気がする
ISR() を外に出したいのなら uart.c のような別の *.c ファイルに記述して、 必要な定義類を uart.h に記載するのが良いでしょう Cがアホ言語かどうかはともかく、
なんでこんなにMCU向けにCがはやるようになったんだろ?
FORTHなんか機械制御用として作られたユニークな言語だし、
小さなMCU向けにはVTLみたいなものでも十分だと思うけどな。
だれかアッと驚くようなD言語処理系でも作っておくれでないかえ。 >>723
いまさらテープドライブ?
まあMCUならいいのかもね。 当時はさ
CPU速度が遅くメモリも潤沢ではなかったが為に
インタプリタ系言語が敬遠されたってだけだと思う
PASCALもpコードの奴はトロいしw Cの設計思想はコンパイラ開発者に楽させるためだから、Cはあほ言語なんだよ。
プログラマに楽させるためのJavaとは真逆の設計思想。 Cはあほ言語なんだよ、だってさ。あの人いつも極論言ってカッコイイって思ってるのかな。クスクス。 なに使ってもダメな人はダメ
アホなのは言語じゃなくて
その言語の思想を理解できずに
「あほ」って言っちゃう方
所詮、道具なんだから気に入らなきゃ
スルーして別の道具を選択するなり、
自分で道具から作りゃいいのに… >>718
>>719
反省しとります
ヘッダーに記述するのやめておきますm(_ _)m >>730
自分でコンパイラ作るの?
しかもアセンブラで? >>732
ツールってのはそうやって出来てきたんだよ
既存のツールにどうしても馴染めなきゃ、
諦めるか、自分でツールを作るしかないだろうが 今からC言語を学習する人は可哀想だね。
大抵の場合、組込みでしか役に立たないし…、しかも給与高く無いという。
まあ、趣味で使うなら作法とかそんなのは気にせずとりあえず動けば良いと思います。 食うために言語をマスターするという発想しか浮かばない境遇そのものが可哀相 C使ってても給料高い人はいくらでもいるけどな。
別に組み込み以外でも、ドライバ開発だったり、ライブラリの高速化とかで需要はあるだろう。
ドライバ開発とか、毎回とんでもない金がかかる。。。
自分でやれればいいんだけど、あれは無理。 何か一つの言語を深くマスターできていれば
他の言語もすぐにマスター出来る
逆も真で、ダメな奴はどんな言語を選んでも
ものに出来ない C言語は習得が難しい割には、一般的には収入低いのは確か。
簡単な組み込みが多いからかな?
OS周辺や、ドライバ開発となると、C言語出来るというより、単純に能力が高くないと無理なので、
収入高そうですね。
C言語出来るというだけでは、コピペできるか、ある程度スクラッチできるか、
ライブラリ作れるか、ドライバ作れるか、OS作れるか、言語そのもの作れるか、
と範囲が広すぎて、能力を把握できませんね。 「プログラミング言語別年収ランキング 2018」を見ると
Cプログラマは最下位(10位)で可哀想にプログラマ業界のワーキングプアだ
https://tech-camp.in/note/careerchange/49077/
俺はMCUに関してはフルアセンブラ派なので競争相手が全く不在で
こんな言語を超越して稼ぎまくっているから関係無いけどw >>744
クイックソートの例を見てみたけどCより遥かにスッキリ書けるね
AVR用のコンパイラとデバッガは存在するの? Haskll てH言語?
「頻繁に IO を行うプログラム: IO などの不純な行為は Haskell は苦手。」
http://www.shido.info/hs/haskell1.html 自分は組込み屋ではないですし、Cは1年に1回程度チラッと仕様確認で見る程度ですね。あとは趣味のAVRで利用する程度です。
ただ、IT土方で薄給なのは事実ですが…。
ただ、どうせやるなら趣味でも仕事でも新しい方が“何となく“良い気がしませんか?(錯覚かも知れませんが)
まあ、C以前の低級言語は、コンピュータの動作がどうなってるか学習も出来るので、やって損は無いとも思います。でも、やっぱり今更感が強いですね。 言語よりも、成果物だもんなぁ・・・・
自分が成果物を出しやすい言語を使えばそれでいいわけで。
もちろん、職場とか取引先で指定もあるけど、ライブラリにして投げ渡すという手もあるし。 昔はみんなコツコツ薪を集めてお風呂を沸かしてたのに
最近の若い奴はボタン一つで風呂沸かしやがって ゆとり元年のガキが2010年入社だったが
最近のは更にゆとり教育期間が長くてもうえげつない動物みたいな奴ばっかだな >>751
ゆとりだけが原因じゃないんだぜ。
採用活動の制約のせいで経団連加入の企業は、
それ以外の企業が採った後の残りかすしか採用できてない現状。 >>751
それはご愁傷様。
こちらの観測範囲だと若い子ほど優秀な印象。
内向的ゆえかコミュニケーション能力高いし。
並みの子が来たがらない環境なんじゃない。
最近はそう言う情報も流れてるし。 最近のゆとりは魚が切り身で泳いでると思ってるとかどうたらこうたら 同じ処理の繰り返しって積極的に関数化した方がいい?
プログラムメモリ的にも関数化した方がコンパクトになるのかな? 関数コールする度にスタックを食い潰して行くからなぁ
ATtinyとかはSRAMがすくないので、極力関数化せずに、
マクロを多用している >>756
基本は、関数だけど。
スタック消費を避けたいときと、処理速度を上げたいときは、マクロも検討します。
ただ、デバッグが面倒になるときと、マクロの副作用もあるので慎重に。 とりあえず関数で書いて完成したらROMの許す限り展開するだけだな俺は メモリにも処理速度にも問題が無いならそんな余計なことはしないな俺は >>761
コンパイラの吐いたコード見て、思わずマクロにすることはありますね。
パラメタの数だけ、スタック退避されてビビル。
コンパイラの最適化によるけど、参照だけなら const つけるとか、
あえて、パラメタ変数をグローバルで宣言するとかもあるけど
メモリ許せば、マクロかな〜
ケースバイケースで、指示が無い限りは、センスに任せるっていったところか。 スタック無しでもそこそこのパラメータ渡せるのに、
スタックにまでパラメータ積む様なコードって汚そうだなぁ。
ポインタ渡しとかにしときなよ。 >>763
avrgccに限らずって話ですよ。
コンパイラの最適化もあるし、
ポインタ渡しにしたら、変数アクセスごとに、インデクスレジスタを
更新しますからね、当たり前の話ですけど。
そのオーバーヘッドとコード領域の増加を避けたいこともあるのです。 AVRライターに純正のAVRISPMK2ってのがあるけど、これって何か特別優れた点があるの?
純正だから安心的な話じゃなくて機能的に。
と、言うのも中華な激安AVR(と比べると失礼かもしれないが)とくらべると明らかに基板の密集度が違う。
ほかの多くは電源供給できるが、この製品はそれもできない。
何か優れた点があるのかなのと気になって・・・ アトメル純正はどれも電源供給はできない。
『純正である』信用以外のメリットはこれと言って無いと言っていい。
しかも本家ISPmk2はとっくの昔に販売終了していて、あっても店頭の売れ残りだけ。
最新のデバッグインタ−フェースであるUPDIにも対応していない。 >>768
世の中にあふれるどのライターよりも複雑なんでなんかすごいのかと思ってたけどそんなことはなかったんですね。
つか、販売終了してたとは知らなかったです。
ポチる前に聞いておいてよかった。
他の物色します。これ結構いいお値段するんで・・・
回答どもでした。 ライターでしかないISPmk2買う勇気があるなら、
デバッグもできるAtmel ICE買う方を勧めますよ。 attiny202/402/212/412の4種類あるね。DIPは無いけど。 mega808なんて出すのか。
120円くらいと予想。 USIはI2Cで使ってるので
ソフトだと速度出ないし tiny3216が便利すぎてまとめ買いしたこればっか使っとるわ 速度出すなら水晶欲しいな…?
VCC!GND!XTAL1!XTAL2!SDA!SCL!TXD!RXD!
リセット殺しても他になんも付かねぇ!!
どうでもいいけど8ピンのDIPかわいいよね >>776
3216が出る前に1616をまとめ買いしてめっちゃ使ってるw
ICE使っても1ピン喰われるだけだし、デバッグは安定してるし、いい子だよ。
mega3208もお気に入り。 tiniy0/1シリーズなら内部20MHz有るんだから水晶要らないっしょ。
クロックの出荷時誤差書き込んでくれてるし、オートボーレート機能有るし。
てかそもそも水晶付けらんないし・・・ 代表特性だと全動作温度範囲で0.5%くらいに収まってるから大丈夫なんじゃない?
クロックをオシロで見ながらドライヤー当てて見たけど全然動かん。 最近のは水晶付けられないんで音程狂って使えないんだよなー。
外付け発振器だと高くつくし >>776
おすすめのライター教えて
ATtiny416-xnanoの半分使っても書けそうだけど… >>782
「デバッガ」だよ。Atmel ICE↓
http://akizukidenshi.com/catalog/g/gM-08285/
使ってみないと良さは伝わらんと思うけど、
一度使うとこれ無しにデバッグする気になれないと思うよ。 あ、最近のデバイスならPICKit4でもデバッグできるんだっけ↓
http://akizukidenshi.com/catalog/g/gM-13337/
電源も供給できるし、誰か人柱になってくれw >>781
最初の頃UARTが全然届かなくて水晶にしたら解決して以来、
基本内蔵は使ってないんだけど、
そこら辺どう? >>787
屋内使用限定で通信エラーが重要じゃない売り物でそこそこの数出てるけど、文字化けの報告は一度もない。
一応20台くらい-20〜50度の環境試験かけたけど、文字化けは1台も無かった。
社内用のちょっとした治具でもUARTは当たり前のように使うけど、xmegaや今のtinyに水晶を積んだことは無いな。
もちろんトラブル無し。
tiny2313やmega328はダメダメだったなあ。 経年劣化は知らんよ。
言い訳のできない産業用途なら俺でも水晶発振器積む。
用途とコスト次第ってことよね。 Atmel STARTじゃtiny3216なんかのボーレート補正コード吐いてくれないんだよな。
水晶付けられなくしたんならその辺ちゃんとしろよって思う。
プログラムで補正したボーレートレジスタ設定値を計算させたらコード量が膨大になったよ。
inline関数にして可能な限りプリプロセッサ任せにしたら激減したけど。 ここ何日か、tiny2313+内蔵OSC8MHz+19.2Kボーで
UARTをデバッグ用に使っているけど、文字化けは経験していない。
ただし仕事(金を貰う)の仕様として使うUARTなら水晶を使う。 室内じゃたいした温度変化ないからそんなもんよ。
ドライヤー当ててみな。 19200じゃどうでもええやろ
250000とか115200のハナシ クロック精度の話してんだからボーレート関係ないな。
精度が悪けりゃ300bpsであろうとも化けるさ。 >>788
使い始めてダメだったの丁度その二つだ。
xmega系使うときあったら内蔵試そうかな。
むしろどんな仕事なのかが気になった。
XMEGA32って安いのね 同じQFP32ピンならmega3208はもっと安いよ。
こいつも内部クロックが最近のタイプの隠れxmega系列。 厳密にはコアや命令セット上の分類だよ。
DFLLなんて周辺機能の一部でしかないし。
xmegaより後に出たtiny0,tiny1,mega0シリーズはgccでの分類上もxmega。
まあ製品名にちゃんと「x」がついてるものより機能低下してるのは確かだけどね。
DMA無くなったのは痛いしタイマーの機能もしょぼい。
しかし安い! そこじゃなくて、>>800の、mega3208の内部クロックがxmega系、って所。
正直なところ、mega0シリーズはクロックだめだめで、
音系のもの作る私に取ってはちーとも使いモノにならない。 外部クロック使えばいいのに
今時MEMS発振器使えば安上がり >>803
UARTが使えるかどうかの流れからいきなり音系基準に変えられてもw
mega0系はクロックの調整幅が荒いからね。
シグネチャのOSC20ERR5Vとか使ってタイマー側で校正してる?
音関係なら0.5%のズレでもきついのかな?
DFLLも内蔵32Kでの補償なら精度は似たようなものだと感じたけど。 音楽系なら0.5%の誤差はたぶん許されないでしょうね。「440Hzが438Hzに聞こえる場合があります」と言われてOKって言う人少なそう。
事務用のカセットレコーダーだとパーセントオーダーの誤差は許容されていたはずだけど。
UARTなら、相手も同じように誤差があるとしても2%ぐらいは大丈夫では。 >>806
音楽系では、精度が高くても、ジッタで周波数が特徴的にずれるのはNGですね。
水晶にしても、ノウハウがないかぎり
精度の保証された、外部発信器かなーー と思ってるけど、どうなんでしょ。 水晶発振器を外部トリガに渡して内蔵RCでカウントさせると周期的にうねってるのが判る >>807
精度、正確度あたりの言葉を狭義、広義で使う人とで混乱しそう。
あと、機器の物語やココロで音楽を聴く人と、まあこれで普通は十分だなという立場で聴く人とでも違ってきそう。
私は後者。水晶だったら、普通にそれで組んであったら、もうそれで十分すぎるほど十分だと思う方です。 >>809
普段は、効果音、程度なので、レゾネータで十分です。
楽器と、云ったとたん難しくなるでしょうね。
水晶は、RTC作ろうと思って、32768の水晶使ってみたら、
結構時間精度が出せなくて、キャパシタの選択等、簡単な話ではないな〜と思った次第です。 RTCはぶら下げるコンデンサでめちゃ変わりますね。
特別32.768kHzの水晶だから変化するのではなくて、RTCが要求する精度が高いわけですけど。
高精度なRTCが欲しかったらTCXO入りRTCに逃げています。機会があれば、SiTIMEのMEMS TCXOも試してみたい。 マイコン内蔵のRTCに精度求めたらつらかった経験あるわ。
専用ICのPCF2129に落ち着いてから変える気無いなあ。 誰もが頭が良くなる、プログラムが書けるようになる方法が発見される 50545
https://you-can-program.hatenablog.jp うちじゅうどこでもWi-Fiが拾えてESP8266から時刻サーバへアクセスできるから、
RTCモジュールなんかみんなお蔵入りしてるわ。 フィールドに出るとネットにつなぐだけで一苦労だからなぁ。。。 xmegaのが酷かったのは見た。
tiny1616が有るから今からオシロつないでみるわ。 オシロが500Ms/sっていう中華激安品なので参考程度に。
分解能低くて分周しないと計測できません・・・・
tiny1616のクロック出力(20MHzの48分周)をPersistモードで観察したところ、
1クロックの振れ幅が10nSくらいでした。中心値から0.2%強ってところ。
xmega32E5も有ったのでついでに確認。
内部32kとのDFLL有効、32MHzの64分周で似たような波形でした。
ちなみにtiny1616のクロック周波数は19.79MHzで約-1.05%
SIGROW.OSC20ERR5Vで補正したボーレートは-0.3%でした。 >>811
>>812
市販品の1000円くらいの液晶時計が、お馴染みの水晶でそこそこの精度なんで、
簡単だろうと思ったら大間違いでしたね。
大量生産品(手間かけて精度を追い込む)か、目安程度(精度悪くてもいい)のRTCで無いかぎり、
マイコン内蔵のRTC使う理由が無いなぁ という判断してます。
専用ICが楽チンでいいですよね。 >>820
AVRスレですが、AVRの内蔵RTCは使ったことがありません。すみません。
>>811でも書きましたが、、精度の高い水晶を選んだところで、コンデンサを適切に調整しなければ、水晶の精度を殺してしまいます。
計算で目途をつけておいて、発振周波数を確認しながら1〜2pF単位でコンデンサを交換して調整をして、詰め切れないぶんはRTCの補正機能で調整します。
ここまでは、割と手間じゃありません。厄介なのは、温度変化に対してどこまで対応するの?ってことじゃないですかね。 最近のマイコンだと、温度補正付きRTC内蔵のものってあるのかな? 専用ICがあるものは、専用ICに任せた方が上手くいくのは寂しい限りだ・・・
実務的には楽なので、大変結構なんだが >>821
お仕事的には、専用IC使うとか、最新のMCU使えとか、別のMCUなり、合理的な
選択すればいいんですけど、お仕事を解決するためのスレではないので、
一応 AVR しばりで、いろいろ思いを馳せたり、
手と頭を動かすのは楽しいです。
ところで、RTCのテストって、やはり高精度の測定器が必要なのかしら?
1日に数秒ずれるとか、そういう検証は、つらいです。 >>824
仕事といっても、量産品だとコストがやかましく言われる場合もありますし、CPU内蔵のもので実装することがあるような。
測定ですが、以前の勤務先には基準クロックがあって数秒ぐらいで誤差がわかりました。
自宅でやるぶんには、RTCに1Hzなり10Hzを出させて、それでゲーティングして高精度TCXOのクロックをカウントしてます。
そのカウンタでGPSの1Hzを見ておいたらTCXOの誤差もわかるし。それを使えば、数秒ぐらいで数ppmぐらい(月差10秒ぐらい)までわかります。
RTCが温度補正機能を持たないなら、これ以上追い込んでもあまり意味がないので。 >>825
数ppm で月差10秒って冷静に計算すると、当たり前ですけど、大変ですね。
感覚的に50ppm以上の精度だと温度係数が効いてくるし、
MCUの発振回路のバラつきもあるので、どの程度の精度を見込めるかって
重要ですね。市販の時計って優秀だな〜
炊飯器の時刻タイマーや、お風呂の時計は精度悪いけど、まぁそういう仕様なんですね。 俺がやってるAVRでのRTC校正方法は、
GPSの1PPSを基準にRTCクロックの32768Hzを61秒分カウントする。
カウンターを15ビット以下でフィルタして符号付きとみなせば
約0.5ppm単位の誤差がそのまま見れるよ。
元々誤差が多くないRTCなら8ビットカウンタでも十分。
コンセントから電源とる時計は精度最強なんですけどねw。 61秒で 0x1E8000 カウントで、ほぼ200万カウントだから0.5ppm単位か…。
なるほど。すごい。 >>828 >コンセントから電源とる時計は精度最強
時刻情報が必要な、AC100V電源のある装置で
AC100V → 使わなくなったトランス式ACアダプタから取り外したトランス
→ CRとツェナーダイオードとフォトカプラ
→ CRとシュミットトリガ入力インバータ → CPUのカウンタ
で50Hzパルスを取り出して時計を駆動していますが、
半年後でも1、2秒程度の累積誤差です。
もっと減らすにはどうしたら良いか思案中です。 >もっと減らすにはどうしたら良いか思案中です。
ノイズを拾うなどして誤カウントしているのでもなければ、電力会社依存なんでしょうね。
電力会社はどれぐらいの精度を保証しているのでしたっけ。ちょっと探しただけだと見つかりませんでした。 それって10年でも20年でもその程度の範囲じゃないの?
短期的変動でそのくらいは揺れる。 1日あたり4,320,000回になるようになっていて、細かい周波数は+-0.3くらいだっけか
調べるとこうあった
日本の電力会社が目標としている周波数偏差
北海道 50±0.3Hz以内、時差 3秒以内
中西地域 60±0.2Hz以内、(中部電力 時差±10秒以内、滞在率95%以上 60±0.1Hz)
東地域 50±0.2Hz以内、(東京電力 時差±15秒以内)
島嶼部 沖縄電力 60±0.3Hz以内、時差±8秒以内 時計の調整を手動でやっていたころはオシロで位相を見ていたな
プローブ付けられないから電源端子から発振周波数拾ってた
クオーツの発振音なんてマイクで拾えるもんなんだろうか いつのまにかtiny10が再び安くなってる
割と便利なんだよな >>837
32.768kHzの水晶振動子をマイク代わりに時計に接触させると拾えるよ PICkit4で遊んでたらこんな商品があるのを今知った。
http://akizukidenshi.com/catalog/g/gM-13854/
デバッガが1740円かよ・・・・ハヤクユッテヨ これPICKITとどう違うの?
PICKITは3でAVRISPmkUも手元にあるけど、あると便利? >>842
AVRのインサーキットデバッグができる。
ISPmkIIはただのライターだし、PICkit3はAVRに対応していない。
PICkit4のサブセットらしいがAtmel Studioで使えるって情報が無いな。
PICkit4は使えるんだから対応待ちだろうか。
>>843
だってPICkit4は5700円もしやがったんだぜ。
買ったばかりなのに壁に投げつけたくなった・・・ >>844
なるほどそーゆーことか
確かにAtmel Studioでしかデバッグしてなかったわ
今度秋月よったら買って、俺も使ってみるよ
情報さんきゅー >>847
不安になるほど熱くなるんでヒートシンク貼って使ってる >>848
PICKIT4もUSBつないでいるだけで結構熱い。中の基板はもっと熱いはず。 PICkit4を昨日からUSB繋ぎっぱなしにしてるけど暖かくもなんとも無い。
電源供給設定の関係か? >>850
確かに、書き込み時に、電源供給設定はしてます。 mega4809にDIP40ピンを追加だってさ。
DIP好きの人よかったね。 st-link v2とstm32をつなげて
STM32 ST-LINK Utility立ち上げて接続したら
if you're trying to connect to an stm32w1xx device please
select normal or hotplug mode frome target settimgs menu
if you're trying to connect to a low freqency application
please select lower swd freqency mode from
target settings menu
エラーが出て接続が出来ません。
//www.youtube.com/watch?v=KgR3uM21y7o&t=43s
この動画にある物と同じ物使ってます。 とりあえずメッセージを理解してその通りにやってみたら? >>854
さっぱりわからない。
一応翻訳した通りにはやったけど
モードもアンダーリセットに切り替えると今度はホットにしろとメッセージが出て
ホットにしたらアンダーにしろと何が何だかわからない。 >>857
落ち着け!顔を真っ赤にして手を震わせながら投稿しているよね。
薬飲んだほうがいいよー。 ID:REF49+Aaさん。なぜ AVRのスレで、STM32のことを相談なさっているのですか? マイコンの総合スレがあったら
親切丁寧にレスして引きずりこめるのになぁ…w adciがしたい場合ってbrcsで分岐してやるしかない?
sbciじゃ無理だよね
他のレジスタは使わない前提 ごめんbrccだったまぁ分岐作るってこと
16bitの即値加算が一手間いるんやね C言語みたいにr1をゼロレジスタとして固定するとかどう?
アセンブラなら別にr1である必要もないけど。 >>869
ありがとう
実はもともとCで書いてるんだけど、割り込みをISR_NAKEDつけてアセンブラで書いてるんだ
割り込み書いてるからレジスタ使うと漏れなく4クロックが追加されてしまうんで
素直にbrccで分岐させるよ UARTとRS485を使いたくて、
UART2チャンネルの5v avrを探してるんですが、
お手頃なのはやはりAtmega64でしょうか?
ピン全然使わないので、atmega328サイズで無いかなと思いまして。 tiny441/841なら14ピンでUARTが2個あるよ。 新しくtiny2シリーズが出るみたいね。これもtinyなのに2UART有る。
AVRやめる気は全然無いんだねえ。 PICへお移りくださいと言ってサポートしたり世話焼くより
そのままAVR食わしとく方が稼げる
それくらいのことは馬鹿でも判断できる >>878
俺もMicrochipの考えは>>877の通りだと思うが、
もっと説得力のある理論があるならぜひ聞きたい。 Atmel買収したのは32bitの為じゃないかな
MIPS-PIC32のラインナップ眺めると、他のARM製品に比べて
性能や消費電力に見劣りする
HarmonyのAtmel製品への力の入り具合といい
32bit市場に食い込みたいんだろ
STM32なんかのライブラリはバグで結構不満が多い人いるからね
まぁ、Harmonyも前バージョンはバグまるけなんだけどな
Atmelの技術力借りて、まともなライブラリを充実させて
顧客を取り込む目論見じゃないかな
8bitはついでだろ、
ついでだから、何もしないと思うな
ただ、MIPS-PIC32が終焉したらAVRもヤバイかもね 32bit全部欲しかった訳ではなく必要なのはSAMシリーズだけな。 出た出た、「秋月の扱いが少ない=パッとしない」視野狭窄な人 なにが欲しかったのかを憶測で語るのって、口調を見てると、読んでる誰かが不快に思うことを期待してることが多いよな。
語っている人の人格が透けて見える。 ?
最近、や〜っとSAM E70基板作ってみての感想ではあるが
ARMスレとかでも、sam系は正直、あんまり話題ならないし… >>875
こんなのあるんですね。見てみます。
ありがとうございます。
こんな石が欲しい、って時どうやって探してますか?
RSで絞り込みしたりするものの、探しにくい。 >>887
メーカーのパラメトリックサーチですぐ見つかりますよ。
UARTの数が2個以上で絞ってピン数でソート。
RSは品揃えが悪いから、今だとDigikeyで探してマルツが一番じゃないですかね。
>>876
サーチ結果をよく見るとtiny1624なんて新種がありましたね。見落としてました。
私もUARTを2個使うことがちょいちょいあるのでこれは楽しみです。 内蔵コンパレーターを出力ポートに紐付けたときの伝搬遅延時間ってデータシートに載ってる?
信号が逆転してから1クロックかな? ごめん俺の勘違いだったmegaシリーズだとピンへのACOUTはないんやね
いつも使ってるtiny1シリーズだとACOUTがあってデータシートにも伝播遅延時間が載ってるからmegaにもあるのかと思ってた
mega0、mega1とかの次世代品じゃないとそもそもコンパレータ出力をピンに出す機能が無かったわ…
というかチップすら書いてなかったわ申し訳ない、328pのお話でした
さすがに遷移割込みで毎回ポート叩くわけにもいかないしlm393でも付けるか
お騒がせしました >>888
>パラメトリックサーチ
ttps://www.microchip.com/maps/Microcontroller.aspx
であってます?
検索してもサイト内探しても見つからず、ぐぐって出てきたpdfからようやく。
ttp://ww1.microchip.com/downloads/jp/DeviceDoc/70294B_JP.pdf
比較もできて便利ですね >>891
簡単にたどり着くルートが無いなぁ。↓
https://www.microchip.com/paramChartSearch/chart.aspx?branchID=30047
"Show ALL Product" を押さないと人気の無いデバイスが出てこないので注意。
MAPSは細かすぎて・・・ AVR選択の話しでなくて申し訳無いが、
少し前にPICスレで話題になった、<タクトスイッチによる模型自動車のLED点灯制御>、
自分だったらどのように作るだろうかと興味を持ち、tiny2313でやってみた。
ヒマで、かつ、その気になった時に作業したので、
(途中、プログラミングのメドが付いたら、興味が薄れてしまった)
かなり日数が掛かったけど、正味の作業時間は15〜20H程度だと思う。
少し複雑なLチカ、というだけでは面白くないので、通信による制御とゲームも組み込んだ。
機能の説明の末尾にHEXファイルを付加しておいたので、興味を持たれた方はどうぞ。
https://pastebin.com/7vNyprnZ
デバッグに使用したスイッチとLEDの治具用ボード
https://i.imgur.com/DysWn5H.jpg
昔、絶縁24点DOボード、DIボードの動作確認用に作ったものを流用した。
ピアノ型ディップスイッチをタクトスイッチのように操作するのは
予想した通り難しくて腱鞘炎になりそうだった・・・。
(レスの流れを切って長文、のお詫びに、笑って貰える自信はあまり無いけど、
一応、オチを付けときました) >>893
>簡単にたどり着くルートが無いなぁ。
>MAPSは細かすぎて・・・
急がば回れ。
https://www.microchip.com/maps/main.aspx
> MCUs & MPUs
CPU Type > 8-bit AVR
Packages > Pin Count > 14, 28
Communication > UART > 2, ALL
確実にたどり着けるよ。 atmelICEでdebugWire使うとき、SPI用に用意したマイコン側のコネクタそのまま使って大丈夫ですか?
マニュアルにはミニバラ線使えと書いてありますが、ピンアサイン的に行けそうかなと。 ISPコネクタ使わないとそもそもデバッグワイヤに切り替えられないよ。 attiny1627シリーズはいつ頃に発売されるだろう?
そろそろ在庫がなくなってきて、
せっかくなら12bitADCのあるtinyAVR 2シリーズを在庫にしたいのだが 割り込みから戻るときにretiってやるけどこれをretにしたら
割り込み禁止したまま戻れる?
rcall/callじゃなくて割り込みのrjmpからでもretしていいもん?retiでもどってcliじゃないとだめ? 割り込み禁止からさらにcliしてどうする。(やる場合もあるけどさ・・・)
動きがわかっててやるんなら好きにすればいいと思うよ。
割り込み禁止のままフォアグランドに戻れる。スタック戻し忘れるなよ。
フォアグランドの処理が常に割り込み発生していないか気にかけないといけないし、
割り込みコントローラを搭載しているタイプのデバイスではseiだけでは動かんぞ。 >>900
割り込み禁止にしたまま、割り込みから復帰したい場合、
割り込みのからのリターンをretにするだけでOK?
って話しだろうが
AVRではやったことないけど、時々見かける
テクニックだわな ありがとうAtmelStudioのシミュレータでやってみたら
sregのiフラグは0のままメインに戻れたわ >>900
質問理解できてないのに的はずれなこと書いてたら恥ずかしいぞ 【超悪質!盗聴盗撮・つきまとい嫌がらせ犯罪者の実名と住所を公開】
@高添・沼田(東京都葛飾区青と6−26−6)
※盗聴盗撮・嫌がらせつきまとい犯罪者のリーダー的存在/犯罪組織の一員で様々な犯罪行為に手を染めている
老義父は息子の嫁の痴態をオカズに自慰行為をし毎晩狂ったように射精をしている/息子の嫁をいつもいやらしい目で見ているエロ老義父なのであった
A井口・千明(東京都葛飾区青と6−23−16)
※犯罪首謀者高添・沼田の子分/いつも逆らえずに言いなりになっている金魚のフン/親子孫一族そろって低能
低学歴で醜いほどの学歴コンプレックスの塊/超変態で食糞愛好家である/醜悪で不気味な顔つきが特徴的である
B宇野壽倫(東京都葛飾区青と6−23−21ハイツニュー青戸202)
※色黒で醜く太っている醜悪黒豚宇野壽倫/低学歴で人間性が醜いだけでなく今後の人生でもう二度と女とセックスをすることができないほど容姿が醜悪である
異臭を流し込んでくるなどの嫌がらせを何度も繰り返ししつこく行ってくる嫌がらせ犯罪者である
C色川高志(東京都葛飾区青と6−23−21ハイツニュー青戸103)
※色川高志はyoutubeの視聴回数を勝手に短時間に何百何千時には何万回と増やしたり高評価・低評価の数字を一人でいくつも増やしたり減らしたりなどの
youtubeの正常な運営を脅かし信頼性を損なわせるような犯罪的業務妨害行為を行っています
※色川高志は現在、生活保護を不正に受給している犯罪者です/どんどん警察や役所に通報・密告してやってください
【通報先】
◎葛飾区福祉事務所(西生活課)
〒124−8555
東京都葛飾区立石5−13−1
рO3−3695−1111
D清水(東京都葛飾区青と6−23−19)
※低学歴脱糞老女:清水婆婆 ☆☆低学歴脱糞老女・清水婆婆は高学歴家系を一方的に憎悪している☆☆
清水婆婆はコンプレックスの塊でとにかく底意地が悪い/醜悪な形相で嫌がらせを楽しんでいるまさに悪魔のような老婆である
E高橋(東京都葛飾区青と6−23−23)
※高橋母は夫婦の夜の営み亀甲縛り食い込み緊縛プレイの最中に高橋親父にどさくさに紛れて首を絞められて殺されそうになったことがある
F長木義明(東京都葛飾区青と6−23−20) https://i.imgur.com/r8DFArK.jpg
気が付けばライター作ってるのは何故なんだろうな
hidaspxは時代遅れなのかな tuny1626/3216のTWIポートって入れ替え可能なの?
最新データシートのポート説明だとデフォルトが
PB0/PB1でオルタナティブがPA1/PA2って明記
してるんだけど、PORTMUX.CTRLBからTWIフラグが
消されている。
なんかトラブルがあったのかな? tiny1616の両ポートでLCD、RTC、EEPを動かしてるけど何ら問題無いけどな。
Microchipになってからデータシートの書き間違いが増えた気がするなあ。
割り込みフラグなんかも自動クリアしないものを自動クリアしますと書いてあったりするし。 これからはデータシートが正しくてチップ側のエラッタなわけだな。 そのうちにハードのエラッタも増えてきて
名実共にマイクロチップテクノロジ風CPUになるわけだ
買収されて良かったな 自称SEが書いた穴だらけの仕様を渡されて、
実装したPGにすべての責任を負わされる日本のIT業界のようだな。 >>912
でもそれって実装中に仕様の穴が判明した時点でSE→営業→顧客へと報連相しないからでしょ
PGの意見が届かないブラック体質の会社なんだよ
それかPG本人の怠慢か 連絡しても「んなこといっても、ちゃんと動くもの納品してよ、今回予算これしかないし、今度穴埋めするからさ」と 客→営業→SEになる日常 > それかPG本人の怠慢か
このとおり。責任を負わされるのは末端。 >>915
実際案件が燃える理由は99%PGがグズだからだし >>913
個人の怠慢ごときがトラブルにつながるなら、
体制や管理ができてないよな >>916 ←やはりほんとのようだ。自分の無能はすべて下請けのせい。 仕様かプログラマのどっちかがちゃんとしてればなんとかなるけど、
大抵、どちらにも問題がある。
仕様が完璧なら、その通りに実装するだけでいい(抜けがなく、機能ブロックの切り分けが上手い)から、
プログラマはコーディングするだけでいい。
プログラマが完璧なら、多少仕様に抜けがあっても、うまくやってくれる。
外注の時に、仕様を書くことがあるけど、完璧に書くなんてできないから、毎回プログラマさんに迷惑かけてるorz
そして、内製のときは、先輩の仕様に抜けが多すぎて(落書き渡して丸投げ&出来上がりに文句タラタラ)、大抵ロクなことにならない。 下請けでプログラム組んだことがあるが、仕様書が間違ってても
仕様書どおりに作るのが鉄則・・・といわれ続けてきた
今までどれだけのバグを世の中に出してきたのだろうか???? >>919
両方が完璧なんてことを前提にすることはできないからこそ、テストやデバッグの期間が設けられているはず。
でも、トップや営業の「おしりが決まってるから」で、すべてがおざなりになることがよくある。
なにかにつけ「できない理由を探すのではなくて、できる方法を探せ」なんて話はどこの現場でも上の方から出てくる。
これって「お客様は神様」と同じで、仕事を請ける立場の本人が自分への戒律として運用するべき精神論なんだけど、
守るべき美徳みたいに下の立場の人に言って、反論を防ぐツールとして使われる。
そもそもそれを言ってる人が、下の人たちがうまく仕事ができる方法を探せていないことが多いのにね。 >だから日本のソフトって品質悪いのか
海外のどのソフトと日本のどのソフトを比較したの?
どれぐらいのサンプル数でそう考えたの? >>923
え?日本のソフト開発の質が高いと思ってるの?
エクセル大国なのに? >>924
>え?日本のソフト開発の質が高いと思ってるの?
>>923は、何と比較して品質が「悪い」のですか? って聞いてるのですよ。
高いという主張はしていないつもりですよ。
ところで、エクセルをよく使う国はソフト開発の質が高くなくなる根拠ってあるんですか? 過剰なexcel依存はオフィスワーカー全体の問題だよ
ソフト開発に限らない >仕様書が間違ってても仕様書どおりに作るのが鉄則
仕様書に矛盾はないのなら仕様書どおりにつくるのが第一なのは間違いない ただの下請けなら
システムがまともに動かないと責任を追わなければならないのなら、おのずから異なるが >>920
元請けに問い合わせするぐらい時間はあるだろう。
問い合わせして記録を取れば何かあっても
私聞きましたよね、ですむよ。
まぁできないからそんなことになってるんだろうけどw
>>929
当時は6次下請けでとんでもなくデカいシステムだった
元請の指示はとにかく期限が優先という回答で
仕様書おりに作るのが当たり前だった
デバッグは専門部署がやっていたのでそこ任せだった
ある団体のZopeシステムだったかな〜〜〜〜〜 28pin DIPの328P後継チップを出してクレメンス SSOP+変換基板で我慢しとけ
ttps://avr.jp/user/DS/PDF/mega4808-28.pdf なら今のところ40ピンのmega4809しかないな。 atmelstudioってceleronでもメモリ積めばサクサク動きますか?
電子工作用のサブPCを組もうと思ってるけど構成に悩んでる
4スレッドあるpentiumぐらいにはしといがほうがいいのかな 底辺のノートPCでも何のストレスも無く動くよ。
重いのは起動だけだ。 プレスコCeleronで動かしてるけどヘーキヘーキ ただ起動時は耐え難く重いからスタートアップに入れて
起動したままにして置くが良かろう。 >>939
オレ様のAtomネットブック舐めんなよ。 IDEなんて必要ない
エディタとavrgccとライタなら糞atomでも快適 そう言えば
秋月mega128に、普通のとdatecode1205指定の2種あるけど
何か問題あったんだっけか?
ググるとdatecode0627がどうたらって出るけど AtmelStudioの話ししてるのになんでCUI老害がシュバってくんの? ぶっちゃけceleronは糞速い。avrに比べれば。 >>945
0525の事か?
古いリビジョンで製品作ってる固定客がまだあるんだろう。 >>947
main.cしかない人のことはほっとこうよ celeronでも大丈夫そうですね
起動が重いのは現PC(i7)でも同じなのであんまり関係ないのかな >>952さんへの悪口じゃないからね!たとえということで >>954
Void〜〜〜〜
なんていい響きだ〜〜〜〜 >>961
そうだったのか…登録だけしてデータ閲覧しまくってた奴らに悩んでたよねー
今考えると中華だったのかなぁ IDEですらインストール&設定が面倒くさくて積みマイコンを増やしてるのに、CMake快適だから!とか言われても発狂のトリガが発生するだけだな Wikiではないが独自のフォーラムがあって、学外の人も登録して使えた
初期の日本のAVR情報共有サイトとしては屈指の賑わいの良さだったよ
ChaN氏が製作したシリアルライタをベースにUSB HIDに改造したhidaspxというライタもメンテしてて
これがCUI書き込み可&安価で作れてそこそこ人気だった
今は千秋教授が定年退職されたのでそれに伴いページ消滅 >>965
HIDaspx懐かしいね
書き込み速度も速くて製造原価も安価で今でも優秀なライターだと思う >>965
解説ありがとう、みんなそこで情報共有して色々発展させてきたんだろうな。 hidaspxなぁ…ATtiny2313が100円だった頃に作ったわ
今ならArduinoMicro互換機(mega32u4)にファーム焼いてavrdudeで制御するavrispmk2クローンライターのが楽で安上がりだな 32u4単体の値段を秋月で見たら…高いなw
流通自体がほとんどない感じだ >>970
石単体を秋で買ってユニバーサル基板で作るんじゃなくて
aliとか尼で支那パチのArduino基板ごと買うと安い
USB micro-Bコネクタまでついた状態で数百円しない そろそろFTDIとかの…と言いだす輩が来るに232ペリカ (^^)/やっぱCH340Gだよな
Prolificのはwin7までしかドライバ無くてクソだった
10に無理やり当てたら不安定すぎて更にクソ pl2303の古いリビジョンもwin10で足切りされてたな Prolificのサイトにも載ってたけどPL2303はかなり模造品が出回ってるらしいからドライバーで対処したとか
PL2303、CH340G、CP2102、FT232RL(ほぼ価格順)ではやっぱりPL2303が一番安いから何も知らない人は買っちゃうんだろうな
ドライバがアレだから特定のPCでドライバ入れ替えて9600とか19200bpsくらいで使うなら使えないこともないけどね CP2102 もコピー品ばかり。
最近認識しなくなった。 いまだと、CP2102積んだUSB-シリアル基板
Aliで1個100円ぐらいで売られてるからなぁ >>978
せやな!
じゃあ70円ぐらいのCH340E基板にしとくわ!
CH340E USB to TTL Serial Converter, 5V/3.3V Alternative CH340G Module for pro mini
https://s.click.aliexpress.com/e/cS9hAt6C それなりに動く?コピー品作れるってすげーって思うわ
よほど自信がないとできない まあ一から作るのもあるかもしれないけど、どっかから検査ではねられたベアチップ入手して適当にモールドして…とかもあったりするのかも
なんせ人多いから何でもできるし何やってるかも全くつかめない 5、6年前だったか
FTDIがWindowsアップデートの中に偽造品潰しドライバ混ぜ込んだのにはドン引きした
あれ調達ルートに相当混じってたから偽物掴んだ会社かなり損害出ただろうに たいして損はしてないと思うな
Amazon 見たら、今現在ででも複数の店で売ってる
ヤワじゃないよ、逞しいヤツラだ。
↓↓みたいな注意書き附けてる処がそうだろう
・Windows 8には対応しません。
・そのために我々はFTDIケーブルまたFTDIフレンドをお勧めします。 >>985
いや、石仕入れて製品に実装した基板メーカーの話してんだが その基板メーカーとやらが、廃棄しなかったから今でもうってるんでしょ?
潤沢に 尼で売ってるようなパチ基板は
FTDIの潰しドライバが撤回された後で味をしめて再製造してる分だろ
尼で売ってる以外にも既に納品済みの特機とかは相当あるはずたが 先日家にある偽FDTIチップと疑われる機器は全部捨てたわ
機器っつったって高が知れるんだけれど
捨てたあと、どうしてあんなものに固執していたのだろうとなんだか不思議な気分になった SainSmartの大昔のUNOはホンモンだったわ
値段もそれなりにしたヤツ
しばらくして暴落してたんでもうちょっと待てばよかたかなとおもてたけど新規に買ったひとから偽物つかまされたってレビューがアマゾンに殺到していて逆に救われたのかと錯覚を覚えた
今でも使えてる いまならFTDIでなくても困ることはないと思うが〜〜〜〜〜 自分はCH340Gを使ってるけど速度も安定性も問題ないよ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 248日 20時間 5分 4秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。