全25件 (25件中 1-25件目)
1

I2Cを使ったプログラムを書いてみようと思ったが、どうやって作りこんでいけばいいのか? 通信なので相手が必要だ! PICを対向で接続して作りこむ?送信、受信の両方をあれこれやるためには、双方にPICkit3が必要になりそう。。。UARTならループバックという手もあるが・・・ ロジアナは手に入れたけど、通信が始まってからでないと使い道がほとんど無いし・・・そんなとき16f1827のデータシートを眺めていて気がつた! 16F1827にはI2Cが2組あるじゃん? このPIC1個でマスター/スレーブが再現できるのでは?でぇ、早速やってみました。接続はSDA1(RB1)とSDA2(RB2)を接続、SCL1(RB4)とSCL2(RB5)を接続それぞれを10Kでプルアップ。 たったこれだけで、I2Cのマスター/スレーブの完成これである程度作りこんでから、ほかのPICへ展開できます。先日、掲載したロジアナのキャプチャー画面はこうやって作ったものでした。何かI2Cデバイスが欲しくなってきた・・・・・ I2Cのスタート/ストップ、送ったデータの中身までわかります。便利だわ。ただしトリガーの設定を間違えると、ちゃんとしたデータとなりませんよ!
2016.01.31
コメント(2)

ここ数年、電子工作というかマイコンプログラムを楽しんでいる。回路・基板はBSch3v、pcbeを利用していて、それなりに環境が出来てきたのでそんなに困ることは無いが・・・しかし自分設計の基板でレジストが塗られて、シルク印刷の入ったPCBへの憧れもある。そこで基板を専門業者に発注してみようかと水魚堂さんのMBEに取り組もうかと思ったら、開発を止める通知が上がっていたので、少々意気消沈。(便利なツールをご提供いただきありがとうございました。) やっぱり本格的なPCB CADを使ってそれらしい基板を作ってみるかな!と! PCB CADなら回路の再利用の効率も上がるだろうし・・・ 実は、今まで、DesignSparkPCB、EAGLE、KiCADなどそれぞれ試してみて何度も何度も断念していた。 昨日も「やはりデファクトはEAGLEだろう!」と思い再びEAGLEに挑んだのだが・・・EAGLEは操作性がどうもなじめない、やっぱりなじめない。。。。。がんばってチュートリアルはやってみたが、操作がつかれる。コマンドの選択でマウスを多用するのが、マウス腱鞘炎の私にはつらい。ショートカットに登録してもあんまり変わらない。また操作方法の概念がちょっと古い。正直使いにくい。 その点DesignSparkPCBの方が操作性は好みである、一応、チュートリアルも行いこれなら使えると思ったのだが、部品の概念が少々難しい。秋月パーツを揃えることを考えたら、手が止まってしまった。 (いつか再開するぞと思いつつ・・) KiCADはずい分前に試したが、バージョンが低くてなおかつ情報が少なく、これからの印象があったので起動しただけでパスしていた。EAGLEと格闘しながら、Webで情報を拾っているとKiCADが新しくなり情報も増えているようなので、再びKiCADに挑んでみるかぁ!と思っている今日でした。
2016.01.29
コメント(0)
----------------------------ここから-------------------------------- 【重要】マイナンバーに関わる大切なお知らせの為、必ず最後までお読み頂けます様お願い申し上げます。※個人情報保護法に基づき、第三者による貴方様の氏名・住所・電話番号・マイナンバー等の閲覧を防ぐ為、本電子文書へは非公開と致します。【本人限定:内容証明電子承認文書】貴方様がご使用されております電気通信端末機器及びインターネットプロバイダを通じ、会員登録状態となっている従量課金制有料サイトの登録確認についてご通知致しました。この度、貴方様が会員登録されている下記サイト運営事業者(以下、原告)より、民事訴訟に関する当組合との最終手続きが完了されました事を併せてご報告致します。---------------------途中省略------------------当組合は、訴訟前に双方の事実確認が義務付けられておりますので、貴方様に瑕疵責任の有無を確認する必要があります。◆瑕疵責任が有る場合・・・・原告の主張通り訴訟手続き◆瑕疵責任が無い場合・・・・原告の主張を取り下げ訴訟停止貴方様に瑕疵責任が無く、何らかの理由で現在に至る場合、当組合より原告へ本件の事情説明を致します。本電子文書を確認されましたら、営業時間内に当組合へご一報頂けます様お願い申し上げます。※本電子文書は第三者機関の開封確認機能が設定されております。尚、本電子文書に対する回答が無い場合は、原告の訴訟提起に従い管轄裁判所にて公判が開始されます。公判日程は裁判所より貴方様の現住所または本籍地または勤務地宛へ、書留郵便が送付されます。※裁判を欠席されますと原告の主張通りの判決が下され、執行官立会いのもと、給与、財産(動産・不動産・有価証券)等の差し押さえを含めた強制執行となります。近年、パソコン・スマートフォン・携帯電話等の電子通信機器の急速な発展により、誤操作トラブル、未成年者の決済トラブル、契約者以外への貸与トラブル、契約トラブルが頻発しております。利用者様の知識不足がトラブルの原因となるケースが相次いでおりますので、インターネット等を利用される場合はよく内容を理解した上でご利用下さい。【マイナンバーに関する注意】民事訴訟及び刑事訴訟の被告人(訴えられた側)となられた方は、訴訟履歴がマイナンバーへ登録されます。訴訟履歴がマイナンバーへ登録されますと今後一切記録を消すことが出来なくなります。~~お問い合せ先~~【日本民間電子事業センター】・対応部署:民事紛争課・紛争番号:S0018436Y ※左記紛争番号をお電話にてお伝え下さい。・部署直通番号:03-6634-7544・営業時間:10:00~19:00 ※土日祝は対応出来ません。----------------------------------ここまで------------------------------------ 上記は今朝届いた変なメールです。最近、ちょくちょくこんな感じのメールが届きます。どれもこれも詐欺なんで、みなさんお気を付けください。問い合わせ先が書かれていたら、それでググってみれば、すぐに詐欺であることが分かります。 慌てず対処しましょう!紛争番号が同じで、社員全員に同じ内容のメール送っても何の効果も無いでしょうに!
2016.01.28
コメント(0)

家に帰ると、宅急便の袋。 何か買ったっけ?心当たりが有り過ぎて、すぐに何かわからない(笑)送り主が「中部電力」。。。は!?電力自由化を控えて、賄賂でも送ってきたかと思って(ワクワク!)開けてみると。。。クロネコからオレンジネコ「カテエネコストラップ」が出てきた。リゾートに泊まれるプレゼント応募の残念賞だったようです。 (ハァ)
2016.01.26
コメント(0)

先日、AliExpressで購入したもの開封の儀でございます。 中華から送られてくる商品は、間違いなくこのようなプチプチ袋でやってきます。最近、なぜか郵便屋さんが「中国からのお荷物で~す」と言って置いていくようになりました。わざわざ、中国からって言う意味がわかりません。こいつは深センからやってきました。10年ぐらい前に深セン行ったなぁ~(遠い目) 中から出てきたのはこちら、まぁまじめな梱包な方でしょう。 クッション材を外します。 だいたいわかりますかねぇ?もうお判りでしょう、Saleae LogicAnalyzer8のパチモンです。(笑)伝票・説明書きなど無いのが普通、InVoiceもついていない。そして8CHなのにクリップが5しか付いて来ないのも中華の常識です(爆笑)先日、サインスマートのLogicAnalyzerを購入したばかりですが、信号の解析ができないただのタイミングチャート見る装置だったので、安いロジアナ無いかなぁ~と探していて見つけました。サインスマートのより安かったです。ここSaleaeの製品は一時期、秋月やストロベリーリナックスでも扱っていたようですが、何処も取り扱いをやめたみたいです。(このパチモンの影響か?) ソフトはSaleaeのソフトがそのまま使えます。 ダウンロードはここ 同じソフトが使えるところがミソです。ソフトにそこそこ機能がありますからね。 このロジアナはリアルタイムで波形を観測できませんが、トリガーを設定することでPCへデータを取り込んで、データを解析して表示してくれます。(最初の画像)この先PICでI2C通信をやってみるつもりだったので追加購入に至ったわけでした。(本当はAliExpressで何か買ってみたかっただけとか・・・?) でぇ、やってみました。 I2CでHello World送ってみましたよ! 【送料無料】OWON2チャンネル デジタルオシロ100MHz+ロジックアナライザー MSO7102TD 【送料込み】 / P23Jan16 OWONロジックアナライザー用モジュールセット OWONロジックアナライザー用プローブ+ケーブルセット PCロジックアナライザー用先端プローブ PASPBERRY PI用オシロスコープ・ロジックアナライザーシールド VM205
2016.01.24
コメント(0)

7Segダイナミック点灯実験最後のプログラムです。回路は簡単です。RA0->aRA1->bRA2->cRA3->dRA4->eRA6->fRA7->g(RA5は入力専用です。)RB0->DIG1RB1->DIG2RB2->DIG3RB3->DIG4RB4->DIG5RB5->DIG6RB6->DIG7RB7->DIG8となるように接続してください。利用している7SegがカソードコモンなのでPORTを「0」にして電流を引き込んでいます。トランジスタを利用しませんでしたが、LEDの明るさは変わらない感じで、これで十分な気がします。 ---------------------ここから-----------------------#include <stdio.h>#include <stdlib.h>#include <string.h>#include <xc.h>// CONFIG1#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled)#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)#pragma config IESO = OFF // Internal/External Switchover (Internal/External Switchover mode is disabled)#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)// CONFIG2#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)#pragma config PLLEN = ON // PLL Enable (4x PLL enabled)#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)#pragma config BORV = HI // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), high trip point selected.)#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)#define _XTAL_FREQ 32000000#define TMR0CLK 8000000//#define DIGIT 4#define DIGIT 8#if DIGIT == 4#define DIGLMT 0x03#endif#if DIGIT == 8#define DIGLMT 0x07#endif#define ON 1#define OFF 0#define BLANK 0x0f // 7Seg Blank (74HC4511 Decoder)//#define TYPE7447//#define TYPE7448#define TYPE4511#ifdef TYPE7447// Dgfedcbaconst unsigned char tdc[] = { 0b01011111, // 0 0b00000110, // 1 0b10011011, // 2 0b10001111, // 3 0b11000110, // 4 0b11001101, // 5 0b11011100, // 6 0b00000111, // 7 0b11011111, // 8 0b11000111, // 9 0b10011000, // 10 0b10001100, // 11 0b11000010, // 12 0b11001001, // 13 0b11011000, // 14 0b00000000 // 15(BLANK) };#endif#ifdef TYPE7448// Dgfedcbaconst unsigned char tdc[] = { 0b01011111, // 0 0b00000110, // 1 0b10011011, // 2 0b10001111, // 3 0b11000110, // 4 0b11001101, // 5 0b11011101, // 6 0b00000111, // 7 0b11011111, // 8 0b11001111, // 9 0b10011000, // 10 0b10001100, // 11 0b11000010, // 12 0b11001001, // 13 0b11011000, // 14 0b00000000 // 15(BLANK) };#endif#ifdef TYPE4511// Dgfedcbaconst unsigned char tdc[] = { 0b01011111, // 0 0b00000110, // 1 0b10011011, // 2 0b10001111, // 3 0b11000110, // 4 0b11001101, // 5 0b11011100, // 6 0b00000111, // 7 0b11011111, // 8 0b11000111, // 9 0b00000000, // 10 0b00000000, // 11 0b00000000, // 12 0b00000000, // 13 0b00000000, // 14 0b00000000 // 15(BLANK) };#endif#if DIGIT == 4//const unsigned char tdg[] = { ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000, // DIG4 ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000, // DIG4 ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000, // DIG4 ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000 // DIG4 };#endif#if DIGIT == 8//const unsigned char tdg[] = { ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000, // DIG4 ~0b00010000, // DIG5 ~0b00100000, // DIG6 ~0b01000000, // DIG7 ~0b10000000, // DIG8 ~0b00000001, // DIG1 ~0b00000010, // DIG2 ~0b00000100, // DIG3 ~0b00001000, // DIG4 ~0b00010000, // DIG5 ~0b00100000, // DIG6 ~0b01000000, // DIG7 ~0b10000000 // DIG8 };#endif// const void *a[] = { &PORTA, &PORTB };union BCD { unsigned char b[DIGIT]; unsigned long d[DIGIT/4];};union BCD lbcd, nbcd;// BCD Data Bufferunsigned char dig; // Digit Counter 0-1-2-3unsigned long tim; // Time(Timer2 Use)/* External */void BINtoBCD(unsigned long, char *, int);void Disp7Seg(void);/* Main */void main(void){ register char i, j; unsigned long dat; // 16F1823 Clock Settiing 32MHz (BaseClock 8MHz + x4 PLL = 32MHz) OSCCON = 0b11110000;// BIT7:1:x4 PLL Enable BIT2:0 BIT1-0:1x:Clock determined by FOSC<2:0> in Configuration Word 1./* BIT6-3 000x = 31 kHz LF 0010 = 31.25 kHz MF 0011 = 31.25 kHz HF(1) 0100 = 62.5 kHz MF 0101 = 125 kHz MF 0110 = 250 kHz MF 0111 = 500 kHz MF (default upon Reset) 1000 = 125 kHz HF(1) 1001 = 250 kHz HF(1) 1010 = 500 kHz HF(1) 1011 = 1MHz HF 1100 = 2MHz HF 1101 = 4MHz HF 1110 = 8 MHz or 32 MHz HF(HFINTOSC x4 PLL) 1111 = 16 MHz HF */ // POART A Initial PORTA = 0b00000000; LATA = 0b00000000; ANSELA = 0b00000000; WPUA = 0b00000000; TRISA = 0b00000000;// RA7-RA0 Output // POART B Initial PORTB = 0b00000000; LATB = 0b00000000; ANSELB = 0b00000000; WPUB = 0b00000000;// 0:Pull-Up disabled TRISB = 0b00000000;// RB7-RB0 Output // Data Initial dig = 0; tim = 0UL; memset((void *)&nbcd, (int)BLANK, sizeof(nbcd));// BCD Buffer Initial Disp7Seg(); // Timer0 Interrupt Enabled // 76543210#if DIGIT == 4 OPTION_REG = 0b00000110;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:128#endif#if DIGIT == 8 OPTION_REG = 0b00000101;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:64#endif TMR0IF = OFF; TMR0IE = ON; // Timer2 Interrupt Enabled // 76543210 0.01sec T2CON = 0b00100111;// BIT6-3:0100:1:5 Postscaler BIT2:1:Timer2 ON BIT1-0:10:Prescaler is 64 TMR2IF = OFF; TMR2IE = ON; // Interrupt Enabled PEIE = ON; GIE = ON; i = 1; j = 0; dat = (unsigned long)i; while(1){ if( tim > 50L ) { tim = 0UL; j++; if( j < DIGIT ) { dat = dat * 10UL + (unsigned long)i; } else { j = 0; i++; if( i > 9 ) { i = 1; } dat = (unsigned long)i; } } BINtoBCD( dat, (char *)&nbcd.d[0], DIGIT ); Disp7Seg(); }}/* Binary to BCD */void BINtoBCD(unsigned long d, char *b, int s){ register char i; unsigned long tmp; for( i = 0; i < s; i++ ) { tmp = d; d /= 10UL; b[i] = (unsigned char)(tmp - (d * 10UL)); } for( i = s - 1; i > 0; i-- ) {// 7Seg BLANK Fill if( b[i] == 0 ) b[i] = BLANK; else break; }}/* 7Seg Display Data Cahnge *//* Data Set Latch Buffer */void Disp7Seg(void){ while( dig );// Digit Display Finish Wait lbcd = nbcd;// To LATCH Buffer Copy}/* Interrupt Routin */static void interrupt interrupt_process(void){ /* 7Seg 1DIGIT Display */ if( TMR0IF ) {// Timer0 Interrupt TMR0IF = OFF; PORTA = 0b00000000; PORTB = tdg[dig]; PORTA = tdc[lbcd.b[dig]]; dig = (( dig + 1 ) & DIGLMT); } /* Clock Count Up */ if( TMR2IF ) {// Timer2 Interrupt TMR2IF = OFF; tim++; }}/* END OF FILE */ ---------------------ここまで----------------------- プログラム的にあまり面白くないです。DefineでロジックICの7447、7448、4511のデコードタイプが選べます。7447と7448では6と9の形が違います。4511は10~14はブランク表示となります。
2016.01.23
コメント(0)

ついに、とうとう、中華サイト「aliexpress」で買い物をしてしまった。ama*oneで購入したものが、中国、上海、から届くことは良くあるが、中華サイトでのお買い物は初めてでした。送料無料のChinaPostでお願いしたので、まぁ1か月ぐらいは最低かかるだろうなんて思っていましたが、なんと、1週間かからずに到着しました。早速、開封&使用してみましたが、使えました!パチモンなのにちゃんと使えてラッキー!です。何を買ったかかは、いずれご紹介します。
2016.01.22
コメント(0)

はい、引き続き7セグダイナミック点灯です。今回は18ピンPICを使います。ロジックIC類は使わない構成です。利用するPICは16F1827の18ピンタイプ。私が持っているPICでは最も足が多い、高機能なやつです。 DIOは沢山必要ですが、回路が簡単で、コストメリットもあります。トリッキーな方法でDIOを減らす事も可能なようですが、正当?な方法で実験します。16F1827にはDOが15本しかありません。MCLRと共用になっているRA5端子はDIにしか使えないです。7セグ+DPのセグメント点灯にDO 8本、桁選択(コモン側)にDO 7本で最大7桁の表示とします。 DPを諦めれば、8桁まで可能でしょう。MCLR端子を除いて、すべての端子を使い切って何を作れるだろうか・・・? 4桁までが実用かな?4桁での動作映像はここ
2016.01.21
コメント(0)

auでんきのサービスが発表されたようです。早速、サービスメニューを調べてみました。なんと一択「でんきMプラン」のみです。 まだ従量電灯Bからの乗り換えしか考えれれていないようです。でんきMプランは、深夜電力設定が或るわけも無く・・・・・シミュレーションするまでも無く、安くはなりません。中電のメニューでも安くならないし、現状維持という事になります。もっとアグレッシブルな電力小売り会社は現れないのでしょうか?(残念)
2016.01.20
コメント(0)

今日はこんな場所でお仕事でした。疲れました。
2016.01.19
コメント(2)

先日、久しぶりにお会いした方からお誘いのメッセージが届いた。名古屋で、福岡の日本酒イベントを行うという案内。行きたいが、明日の朝は早い予定だし。明日は名古屋へ出ないし・・・・くそー、レアでうまそうな酒がいっぱいだぁ。。。。。お近くの方で、ご興味のある方はぜひ! いきてぇーーーーー----------------ここからがイベントの案内です----------------------- 突然ではありますが、テストを重ねてきた「名古屋での福岡県産酒イベント」をミニマムながら開催する運びとなりました。場所は、懇意な店舗のご好意により、錦のプチという場所。日本酒をワイングラスでという考えもあり、あえてこうしたタイプの店での開催となりますが、もしお時間等にご余裕がありましたら、ぜひご来訪ください。 ◆イベント内容 〈 2016 オトナな日本酒 Party vol.1 from FUKUOKA 〉 名古屋ではあまり知られていないが、全国では有名な福岡の酒を楽しむ!◆開催日時 / 1月19日~無くなり次第 ※1月18日にはプレイベント開催。私は18・19日の参加となります。 ◆場所 / プチワインバー MUG 名古屋市中区錦3-14-4 シャインアルファ錦ビル1F Tel 052-971-1414 ◆メニュー飲み比べセット 純米系 4種猪口 限定20セット程度(裏テーマ/米比べ)・“田中六五” 純米 なま 16度 山田錦 白糸酒造 モダン/ライト サライなどの大人な雑誌で近年紹介されないことがない大人気酒です。 フレッシュ感もしっかりなのに、味がしっかりと乗っている印象の限定生酒! ・“JUGEMU” 純米吟醸 15度 寿限無 山口酒造場 モダン/ミディアム うぐいすラベルで有名な山口酒造場が酒米「寿限無」で仕込んだ逸品です。 軽やかなイメージはありつつも、しなやかで酸味がバチっとした硬派な一本!・“若波” 純米吟醸 16度 夢一献 若波酒造 モダン/ミディアム 女性が製造統括を務めるこちらも各メディアや通に大人気の銘酒です。 甘みを伴った幅のある旨味がほどよい酸味とともにゆっくりと優しく広がる酒!・“坐” 無濾過 純米生 17度 レイホウ 若竹屋酒造場 モダン/フル 福岡県随一の名杜氏・横尾杜氏を擁する老舗蔵の入荷したてのレアものです。 フレッシュかつ濃厚な味わいに酸味がきいて、期待を裏切らない美酒に! 一品もの〈ワイングラス〉・“純米大吟醸 BaSaRa” 度数未発表 山田錦 山の壽酒造 モダン/ライト 福岡のこだわり酒蔵と酒販店がコラボした九州限定品の超レアPB酒! 軽いのにコクもあるヤバいこの旨さ! 味わう機会を逃すと後悔しますよ。・“三井の寿” 純米吟醸 酒未来 15度 酒未来 みいの寿 モダン/フル あの十四代の蔵元が開発した酒米・酒未来で仕込んだ純米吟醸酒! 綺麗で上品、軽やかな味わい。スムーズな飲み心地なので食中酒に最適です。・“繁桝 雄町” 特別純米 16~17度 雄町 高橋商店 クラシック/ライト 福岡の名門蔵のフラッグシップを岡山の酒造好適米・雄町で仕込んだ銘酒! 雄町米の持つコクのある旨味とキレのよい飲み口が特徴。ぬる燗もいけます。・“綾花” 純米 15度 山田錦 旭菊酒造 クラシック/ライト 名古屋の日本酒店「米家」も絶賛の有名蔵の、知らず知らすに杯が進む逸品! 舌の上でふんわり花開く酒質とフルーツ香、キレの良い後味が特徴です。・“ぱるふぇ” レアカシス梅酒 若波酒造 ※ショットグラス フランス・ヴェドレンド社の最高級品種「ノワール・ド・ブルゴーニュ」使用。 カシスの香りと果実の甘酸っぱさが広がる、甘過ぎない大人スイーツ的リキュール。 今回は、以上の銘酒9酒をご用意いたしました。 このメッセージを受け取っていただけた方には、サービスの一杯をご用意してます。ただ数量に限りがあるため、売り切れ次第終了とさせていただきます。 ◆サービス酒・“三井の寿 NeVe(ネーベ)” 純米活性にごり 14度 夢一献 みいの寿 モダン/ミディアム 夜に降る雪をイメージした、イタリアンラベルの季節限定酒[冬]。 心地よい微発泡感と控えめな香り、少し甘めでクリーミーな口当たりはたまりません。----------------------------ここまで-----------------------------
2016.01.18
コメント(0)

お疲れ様です。上の写真、Sunhayatoの「ICピンそろった ICS-01」です。このたび、購入してしまいました。つまんない機能の道具ですがあると便利な道具の一つです。下の写真の道具もつまんない機能の道具ですが、有ると便利系です(笑)Sunhayato LEAD BENDER Model RB-5ですぅ。先の「ICピンそろった」の使い方はこんな感じ こんなふうに、ICのピンが微妙に開いていて、ブレッドボードや、基板・ソケットに入らない時にICピンの開きを調整してくれる道具です。通常はテーブルなどの平面に押し付けて曲がりぐわいを調整しているのですが、まぁこんな物も欲しくなる年頃なのでしょうか? 使い方は、説明書通り、置いて->握る->終わり見事にICの足がそろい、気持ちよくブレットボードに刺さります。 Sunhayato(サンハヤト) [ICS-01] ピンそろった ICS01【RCP】02P0…価格:862円(税込、送料別)Sunhayato(サンハヤト) [RB-5] リードベンダー RB5【RCP】02P09Ja…価格:555円(税込、送料別)
2016.01.17
コメント(0)

先日公開した、シフトレジスターを使った16桁7セグダイナミック点灯プログラムを公開します。defineで4桁/8桁/16桁を切り替えられるようなソースとなっています。コメント行を変更してください。またコメントが改行されているとことがありますので、コピペする場合にはご注意ください! ---------------------ここから-----------------------#include <stdio.h>#include <stdlib.h>#include <string.h>#include <xc.h>// CONFIG1#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled)#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)// CONFIG2#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)#pragma config PLLEN = ON // PLL Enable (4x PLL enabled)#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)#pragma config BORV = HI // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)#define _XTAL_FREQ 32000000#define TMR0CLK 8000000//#define TMR0CLK 32678// 桁数はここから下のdefineを1個有効にしてください。 //#define DIGIT 4//#define DIGIT 8#define DIGIT 16// ここまで #define ON 1#define OFF 0#if DIGIT == 4#define DIGLMT 0x03#endif#if DIGIT == 8#define DIGLMT 0x07#endif#if DIGIT == 16#define DIGLMT 0x0f#endif#define BLANK 0x0f // 7Seg Blank (74HC4511 Decoder)#if TMR0CLK == 8000000#define ITM1L (0x17-1)#define ITM1H 0xfc#endif#if TMR0CLK == 32678#define ITM1L 0x00#define TIM1H 0x80#endifunion BCD { unsigned char b[DIGIT]; unsigned long d[DIGIT/4];};union BCD lbcd, nbcd; // BCD Bufferunsigned char dig; // Display DIGIT Counterunsigned char clk; // Clock Divider for Master Clockunsigned long tim; // Timer1 counter/* * */void BINtoBCD(unsigned long, char *, int);void Disp7Seg(void);void main(void){ // 16F1823 Settiing OSCCON = 0b11110000;// BIT7:1:x4 PLL Enable BIT2:0 BIT1-0:1x:Clock determined by FOSC<2:0> in Configuration Word 1./* BIT6-3 000x = 31 kHz LF 0010 = 31.25 kHz MF 0011 = 31.25 kHz HF(1) 0100 = 62.5 kHz MF 0101 = 125 kHz MF 0110 = 250 kHz MF 0111 = 500 kHz MF (default upon Reset) 1000 = 125 kHz HF(1) 1001 = 250 kHz HF(1) 1010 = 500 kHz HF(1) 1011 = 1MHz HF 1100 = 2MHz HF 1101 = 4MHz HF 1110 = 8 MHz or 32 MHz HF(HFINTOSC x4 PLL) 1111 = 16 MHz HF */ // POART A Initial PORTA = 0b00000000; LATA = 0b00000000; ANSELA = 0b00000000; WPUA = 0b00111111; TRISA = 0b00111111;// RA5-RA0 Input // POART C Initial PORTC = 0b00000000; LATC = 0b00000000; ANSELC = 0b00000000; WPUC = 0b00000000;// 0:Pull-Up disabled TRISC = 0b00000000;// RC5-RC0 Output // Data Initial dig = 0; tim = 0UL; memset((void *)&nbcd, (int)BLANK, sizeof(nbcd)); Disp7Seg(); // Timer0 Interrupt Enabled#if DIGIT == 4 OPTION_REG = 0b00000100;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:32#endif#if DIGIT == 8 OPTION_REG = 0b00000011;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:16#endif#if DIGIT == 16 OPTION_REG = 0b00000010;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:8#endif TMR0IF = OFF; TMR0IE = ON; clk = OFF; // Timer1 Interrupt Enabled TMR1L = ITM1L; TMR1H = ITM1H; // 76543210 T1CON = 0b00110001;// BIT7-6:00=Timer1 clock source is instruction clock (FOSC/4) // BIT5-6:11=1:8 Prescale value // BIT3:0=Dedicated Timer1 oscillator circuit disabled // BIT2:0=Synchronize external clock input with system clock (FOSC) // BIT1:1=Enables Timer1 TMR1IF = OFF; TMR1IE = ON; PEIE = ON; GIE = ON; // 74HC164 Sift Register Clr while( !dig );// while( dig );// while(1){/* ここにお好きな処理を入れてください *//* 下の例では。timの変数の中身を4桁ずつ表示しています。 *//* nbcd.b[]配列の中身を最大16桁表示します。 *//* LSB・・・・・・・・・・・・・・・・・MSB *//* nbcd.b[0]・・・・・・・・・・・・nbcd.b[15] */ BINtoBCD( (tim/10UL), (char *)&nbcd.d[0], 4 ); BINtoBCD( (tim/10UL), (char *)&nbcd.d[1], 4 ); BINtoBCD( (tim/10UL), (char *)&nbcd.d[2], 4 ); BINtoBCD( (tim/10UL), (char *)&nbcd.d[3], 4 ); Disp7Seg(); }}void BINtoBCD(unsigned long d, char *b, int s){ register int i; unsigned long tmp; for( i = 0; i < s; i++ ) { tmp = d; d /= 10UL; b[i] = (unsigned char)(tmp - (d * 10UL)); } for( i = s - 1; i > 0; i-- ) { if( b[i] == 0 ) b[i] = BLANK; else break; }}void Disp7Seg(void){ while( dig );// 4 Digit Display Finish Wait lbcd = nbcd;}/* Interrupt Routin */static void interrupt interrupt_process(void){ if( TMR1IF ) {// Timer1 Interrupt TMR1L = ITM1L; TMR1H = ITM1H; TMR1IF = OFF; tim++; } if( TMR0IF ) {// Timer0 Interrupt TMR0IF = OFF; clk = (clk ? OFF : ON); if( clk ) { if( RC5 ) RC5 = OFF; else { RC5 = ON; // Display Data Change PORTC &= 0b11110000; PORTC |= lbcd.b[dig]; dig = ((dig + 1) & DIGLMT); } } else { if( RC5 == OFF ) if( dig == 0 ) RC4 = ON;// DIGIT0? else RC4 = OFF; } }}/* END OF FILE */---------------------ここまで----------------------- タイミングチャートを書いてみましたので、掲載しときますぅ。 ここに動画を上げておきます。 4桁7Seg を2つしか持っていないので、最下位の4桁分と最上位の4桁分のみ表示されていいます。DIG1-DIG4 DIG5-DIG8 DIG9-DIG12 DIG13-DIG16 ここと ここの4桁です。
2016.01.16
コメント(2)

上記が、7セグダイナミック点灯8桁バージョンの回路図です。前回と同様に、74HC164とHC4511へのVDD、GNDは省略してあるのでご注意ください。 74HC164をカスケード接続すれば、表示桁数をどんどん多くできます。(8の倍数桁)あとはPICの能力次第で、何桁までが実用域かが決まります。次回は、プログラム公開します。 未検証16桁回路
2016.01.15
コメント(0)

電力の自由化を控えて、新サービスメニューが発表されましてね。どれぐらいお得になるのか?とワクワクしながら見てみました。上の画像が新メニュー「スマートライフプラン」のサービス内容。「@ホーム、ナイトタイムが長くなりました」といううたい文句!以前からナイトタイムが前後1時間ずつ伸びてくれないかなぁ?と思っていたので、「やったぁ!」とぬかよろこび!早速申し込もうと思って、念のために料金シミュレーションをしてみました。。。なんで?ぜんぜん安くならないじゃん。高くなってる。安い時間が長くなったんだから、安くなってあたりまえなはず・・・・・時間帯別の電機料金がどこにも書いていないので、中電のホームページから探しました。ありました、ありました、こっそり単価上げてるじゃん。全ての時間帯で1KWhにつき3円!単価を上げている。これでは誰も安くならないんじゃぁない?安くなる人居るの?どんな生活パターンの人が安くなるの? 教えて>中電来年にはEライフプランの新規申し込みも終了するみたいだから、慌ててプラン変更しない方がいいですよ!「プラン変えたら高くなった」って事になりかねませんからね。 さてこれを受けて、au電気さんはどんなメニューを出してくるのか?楽しみ楽しみ
2016.01.14
コメント(0)

やってきました。SainSmart社製のLogicAnalyzerユニット!SainSmart社のオスロスコープに接続することで利用可能なロジアナユニットです。以前いご紹介したように同社のDDS-140を持っているのでこれを購入しました。おかげで8Chロジアナがびっくりポンなお値段で手に入りました。 しかし、送られてきたのは上のアダプターユニットのみ、簡易マニュアルとか取り扱い注意書とか何もありません。どこが1Ch? どこがGND? やはりチャイナクオリティググったらYoutubeに使っている動画があったのですが、とてもアバウト!まぁ、あんずるより産むがやすしって事でしょうか?それらしく測定できました(笑) トリガーで波形観測したり出来ないので、デジタル信号のON/OFFが見られる8Chオシロと思ったほうがよろしいかと。。。 発送まで1-3営業日サインスマート 手持型 USBオシロスコープ DDS-140 バンド幅40MHz 200M/S + ロジックアナライザ
2016.01.13
コメント(2)

またまたどうでもいいことをして遊んでいます。 「何が楽しいの?」 などと言われながら・・・先日からご紹介しています、ダイナミック点灯の7Seg表示器ですが、今回は8桁化しました。SN74184,185などを使いPICとの接続も増やせば簡単なんですが、今回はシフトレジスターを使ってやってみようと思い立ちました。シフレジならPICとの接続が2Bitのままで8桁化できるのではないかと思ったのです。使ったシフトレジスターはSN74HC164「パラレルアウトーシリアルインプットシフトレジスター」と言うそうです。Clockの立ち上がりでA、B入力のAND値をラッチして、Clock毎にシフトいきます。4桁表示では4回に1回、A(B)入力をHighにしてあげれば順次、QaからQdまでをONできます。8桁表示では8回に1回、A(B)入力をHighにすれば、Qaから QhまでをONすることができます。何を書いているのか分からないですよね? SN74HC164のデーターシート見てみて下さいね。タイミングチャート書かずに、プログラムを始めたら、何が何だか分からなくなってずいぶん苦労しました。結局A4用紙に手書きでタイミングチャートを書いて、74HC164のデータシートとにらめっこして考えてからプログラムしたら動きました。うまく動かないので信号をオシロで見ていたのですが、2CHでは追いきれなくて、ロジアナが欲しくなって、思わずDDS-140用のロジアナユニットを注文してしまいました。結局、不必要になりましたが。。。(aitendo製LCDのドライバーを書くときには必要だと言い聞かせて。。)これで、前回ご紹介した回路同様にPICのDOは6本の使用で、8桁化できました。動作している動画は、こことこことここに上げてあります。 サインスマート DDS-140 40Mバンド幅 最大サンプルレート200MS/s オシロスコー…価格:16,160円(税込、送料別)サインスマート 手持型 USBオシロスコープ DDS-140 バンド幅40MHz 200M/S…価格:18,620円(税込、送料別)
2016.01.12
コメント(0)

先日、aitendoデビューした事を書きましたが、送ってきた商品を見て驚いた事があったのでご報告します。上の写真、何か違和感ありませんか? ICの型式が読めれば何が言いたいのか多くの方がお分かりになるかと思います。SN74HC164が刺さっている、発砲樹脂!!! HCシリーズってCMOSちゃう?他のパーツ屋で購入して、この手のスポンジに刺さってやってくるのは、ICソケットぐらいです。まぁ大丈夫だろうというようなものまで導電性スポンジに刺さってやってくるのが普通と思っている私には、カルチャーショックでした(笑) CMOSデバイスも丈夫になったんですね。
2016.01.11
コメント(0)

新年早々Newワイヤレストラックボールを購入してしまった。上の写真の一番手前ELECOM「M-DT1BRDK」 です。(奥はトラックパッドELECOM M-TP01DSBK)マウス腱鞘炎で、以前から何か良いものは無いかといろいろ試している。 昨年の年末にサンワサプライの「400-MA048」が特価で出ていたので購入したのですが、使ってみたら左クリックが親指で出来ない作りで、速攻返品してしまった。(ごめんなさいサンワダイレクトさん)現在会社ではLOGICOOL ワイヤレストラックボールM570tを使っているのですが、親指の負担が大きく、人差し指タイプに変えようと思っていたのだ。人差し指タイプの場合、デファクトはケンジントンということになるが、「有線で高価」 無線タイプもあるが評判が悪くて高価!そんなときこの製品を見つけた、マイクロソフトのトラックボールを使っていた人が、乗り換えられるマウスという記事を見て、早速購入してみた。指の使い方がまさに私が探していた仕様通りで、うれしい!少しだけ残念なのは、もう少し大きくなってもいいので、ボールサイズを大きくして欲しかった。やっぱそのあたりは、ケンジントンが良くできている。(全体的な作りではこっちが優秀だと思う) M570tの指使いを手が覚えているので、まだ使いやすいところへ到達していないが、これは購入して正解だった。会社用と自宅用の2つ購入するつもりだが、2つめは少々先になりそうです(笑)【送料無料】ELECOM ワイヤレストラックボール(人差し指操作タイプ) M-DT1DRBK【…価格:5,660円(税込、送料込)【送料無料】 ワイヤレストラックボールマウス ロジクール M570t 【あす楽対応】 【楽ギフ…価格:4,680円(税込、送料込)
2016.01.10
コメント(0)

最近よく耳にするようになった「aitendo」という、電子部品を扱っているお店。地方に住んでいる私が知らなかっただけで昔からあるのだろうか?昔からよく利用させていただいているのは、秋月さん、千石さん、共立エレさん、若松さん、マルツさんこれに海神無線、RSコンポーネンツ 、DigiKey。そして侮れないのがamazonです。そこへ聞きなれない「aitendo」がちょくちょく顔を出すようになった。最初は「antendo」だと思っていて、最近やっと「aitendo」だと言うことに気が付いた。通販のページの日本語が、ほとんどAliexpressの様なので、大陸の方が経営されているのだろう。巷ではここのDSPラジオが流行りなのか? 品揃え、品質的にも深セン臭が・・・しかしとうとう、私も「aitendoデビュー」を果たしてしまった。新春初売り大特価!ってな感じにLCDが200円弱だったのでいくつかの部品と一緒にaitendoデビューを果たしました(笑)パーツ類はamazonのような箱に入ってやってきました。なかなか綺麗な梱包で好感が持てます。今後は、ここの利用も増えるんだろうなぁ・・・中部地区では、パーツ類は送料払っても通販で買った方が安くつくような気がしていますから・・。
2016.01.09
コメント(2)

柴犬のナナちゃんをお庭に出したら、落ちたミニトマトを拾ってきて勇ましく、戦いを挑んでいました。映像はここです。
2016.01.08
コメント(0)

先日から遊んでいる、7Segダイナミック点灯のプログラム公開します。ページからコピペする場合にはコメント行が改行されていたりしますのでお気を付けください。ちなみにこのプログラムを実行するとこんな動きになります。 ----------------------------ここから---------------------- #include <stdio.h>#include <stdlib.h>#include <xc.h>// CONFIG1#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled)#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)// CONFIG2#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)#pragma config PLLEN = ON // PLL Enable (4x PLL enabled)#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)#pragma config BORV = HI // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)#define _XTAL_FREQ 32000000#define ON 1#define OFF 0#define DIGIT 4#define BLANK 0x0f // 7Seg Blank (74HC4511 Decoder)union BCD { unsigned char b[DIGIT]; unsigned long d;};union BCD lbcd, nbcd;// BCD Data Bufferunsigned char dig; // Digit Counter 0-1-2-3unsigned long tim; // Time(Timer2 Use)/* External */void BINtoBCD(unsigned short, unsigned char *);void Disp7Seg(void);/* Main */void main(void){/* ここの変数はテスト表示用です */ register unsigned char i, j; unsigned short dat;/* ここまでの変数はテスト表示用です */ // 16F1823 Clock Settiing 32MHz (BaseClock 8MHz + x4 PLL = 32MHz) OSCCON = 0b11110000;// BIT7:1:x4 PLL Enable BIT2:0 BIT1-0:1x:Clock determined by FOSC<2:0> in Configuration Word 1./* BIT6-3 000x = 31 kHz LF 0010 = 31.25 kHz MF 0011 = 31.25 kHz HF(1) 0100 = 62.5 kHz MF 0101 = 125 kHz MF 0110 = 250 kHz MF 0111 = 500 kHz MF (default upon Reset) 1000 = 125 kHz HF(1) 1001 = 250 kHz HF(1) 1010 = 500 kHz HF(1) 1011 = 1MHz HF 1100 = 2MHz HF 1101 = 4MHz HF 1110 = 8 MHz or 32 MHz HF(HFINTOSC x4 PLL) 1111 = 16 MHz HF */ // POART A Initial PORTA = 0b00000000; LATA = 0b00000000; ANSELA = 0b00000000; WPUA = 0b00111111; TRISA = 0b00111111;// RA5-RA0 Input // POART C Initial PORTC = 0b00000000; LATC = 0b00000000; ANSELC = 0b00000000; WPUC = 0b00000000;// 0:Pull-Up disabled TRISC = 0b00000000;// RC5-RC0 Output // Data Initial dig = 0; tim = 0UL; BINtoBCD( (unsigned short)0, &lbcd.b[0] );// BCD Buffer Initial // Timer0 Interrupt Enabled // 76543210 OPTION_REG = 0b00000110;// BIT3:0:Prescaler is assigned to the Timer0 module BIT2-0:Prescaler:128 TMR0IF = OFF; TMR0IE = ON; // Timer2 Interrupt Enabled // 76543210 0.01sec T2CON = 0b00100111;// BIT6-3:0100:1:5 Postscaler BIT2:1:Timer2 ON BIT1-0:10:Prescaler is 64 TMR2IF = OFF; TMR2IE = ON; // Interrupt Enabled PEIE = ON; GIE = ON; /* ここの変数はテスト表示用変数の初期化です */ i = 1; j = 0; dat = (unsigned short)i;/* ここまでの変数はテスト表示用変数の初期化です */ while(1){/* ここからテスト表示用の処理です */ if( tim > 50UL ) { tim = 0UL; j++; if( j < 4 ) { dat = dat * 10 + i; } else { j = 0; i++; if( i > 9 ) { i = 1; } dat = (unsigned short)i; } } /* ここまでテスト表示用の処理です *//* 上記までにやりたい処理を書いてBINtoBCDの引数1に表示したい値を渡してください *//* テスト表示の処理ではdat変数のデーターを表示させています。 */ BINtoBCD( dat, &nbcd.b[0] ); Disp7Seg(); }}/* Binary to BCD */void BINtoBCD(unsigned short d, unsigned char *b){ register char i; unsigned short tmp; for( i = 0; i < DIGIT; i++ ) { tmp = d; d /= 10; b[i] = (unsigned char)(tmp - (d * 10)); } for( i = DIGIT - 1; i > 0; i-- ) {// 7Seg BLANK Fill if( b[i] == 0 ) b[i] = BLANK; else break; }}/* 7Seg Display Data Cahnge *//* Data Set Latch Buffer */void Disp7Seg(void){ while( dig );// 4 Digit Display Finish Wait lbcd.d = nbcd.d;// To LATCH Buffer Copy}/* Interrupt Routin */static void interrupt interrupt_process(void){ /* 7Seg 1DIGIT Display */ if( TMR0IF ) {// Timer0 Interrupt TMR0IF = OFF; PORTC = (lbcd.b[dig] | (dig << 4));// BIT5-4:Digit BIT3-0:BCD dig = ((dig + 1) & 0x03);// Cyclic Counter 0->1->2->3->0->1->... } /* Clock Count Up */ if( TMR2IF ) {// Timer2 Interrupt TMR2IF = OFF; tim++; }}/* END OF FILE */----------------------------ここまで---------------------- システムクロックはこのCPUの最大32MHzです。そんなに早く無くてもいいのですが、CPU最大パフォーマンスでいつも自分のコードのどこかが動いていないと気が済まないたちなので・・プログラムの説明です。 BINtoBCD()関数でバイナリーをBCDに変換しています。Disp7Seg()現在表示中のデーターがすべて表示されるのを待ってから 表示バッファーへBCDデーターをコピーします。7Segへの表示は割り込み処理ルーチンの中で、Timer0の割り込みで1桁ずつ表示しています。割り込み処理ルーチンのTimer2はテスト表示の処理のタイミング用に使っているだけなので7Seg表示とは直接関係がありません。別の用途に使えます。 ちなみにtim変数を表示させると先日公開した動画のようなストップウォッチのようになります。 ※変な英語コメントにはご容赦を!
2016.01.07
コメント(0)

年末から取り組んでいる? ダイナミック7Seg点灯実験の回路図を書きました。データーシートの真理値表を見ながら、PasSで回路を考えて、そのままブレッドボードに組みましたから、回路図が後追いになりました。しかし真理値表を見るのが久々で楽しかったです。昔々、トラ技のロジックデバイス規格表を見ながら、あれこれ想像を膨らませていた時を思い出しました。(真理値表見るのが好きって変かも?) そうそう、図中のHC139とHC4511のVDD・GNDは省略されているので注意してくださいね。これらデコーダー、マルチプレクサが無ければ11本のDOが必要になります。しかしこれらを利用しているので、6本のDOで制御が可能です。(DPを制御するならあと1本必要です)16F1823にはDOが9本しか無いので、単体で制御は難しいですね。74HC138を使えば8桁まで7SegがPICのDOが7本で制御が可能です。 7SegはHC4511を利用した関係で、カソードコモンです。桁のON-OFF制御にはトランジスタアレーを使っています。HC139が負論理なので1回路につき2個のトランジスターを使い論理反転しています。2SC1815とか使うより省スペースで便利です。 アレイ抵抗もあるといいなぁ・・・ プログラムは次回公開しますね。(特に機能が無いのですが・・・) ※少し書き換えました。 ※2016/01/07 突っ込みがありそうなので・・・ 回路図中のTD62084は間違いではありません。 本来ならTD62083を使うのでしょうが、誤ってTD62084を購入してしまって手元に これしか無かったんです。。。 ※2016/01/10 TD62083を入手して動作確認行いました。 データーシートではTTLレベルはTD62083なので、回路図中のTD62084は TD62083に変更してご利用ください。(実売価格は84の方が安いので自己責任で!)
2016.01.06
コメント(0)

お酒の抜けきらない頭で、プログラム書いて4桁7セグ表示器をダイナミック点灯しました。7セグのデコードは74HC4511を使っていますのでBCDを食わすだけです。桁の選択は74HC139を使っていますので、2Bitバイナリーを食わすだけです。4桁7セグ表示器は4511を使う関係で、カソードコモンです。桁の選択は139にて行い、カソードをトランジスタアレーTD62084を使いドライブしています。139は負論理なのでTD62084を使い論理反転しています。PICからはBCDの4Bitと桁選択の2Bitの合計6本がRCポートに接続されています。RAポートは使っていませんので、これらを使って別の機能を実装できます。4511のラッチとか使った方がいいかなぁ?と思っていましたが見た目問題無さそうなのでした。ここに動画を上げておきますね。 ※2016/01/04 青色7Segでストップウオッチもどきを作ってみました。動画はここ
2016.01.03
コメント(0)

あけましておめでとうございます。 本年もよろしくお願いいたします。昨年末より遊んでいる、7Segダイナミック接続で、14ピンPICの16F1823を使おうとしていたのですが、テストプログラムを書き出した途端に「Connection Failed.」!!!ああああああああ、またかぁ。 509に変更すると何事も無かったように動きます。Pickit3壊れた?デバイスが正しく認識できなくて、APをダウンロードしないように見えるぞ!延長ケーブルがダメなのかも? L型ピンヘッダーに直結!無事にプログラムダウンロード完了! テストプログラムが動作しました。延長ケーブルをもう少し短くして、シールドケーブルにした方が良さそうです。Pickit3で「Connection Failed.」が出るときは、PICとPickitの接続を疑ってみてください!※2021/04/22追記 PICマイコンとPicKitの接続に悩まないためのPIC ICSP書き込みアダプターを作りました。
2016.01.02
コメント(0)
全25件 (25件中 1-25件目)
1
![]()
![]()
