アラーム

O

otuzsubat

Guest
私PCF8583で平日のアラームを使用するようにします。例えば、私は
、 それ
は毎週 月曜日、 13:30で
、 割り込みを生成します。私のコードを以下の通りです。私は間違いだと言うことができる
か ?

INTはint2bcd ( INTは12月) (
リターン( ( dec/10 ) < < 4 ) ( 12月% 10 ) ;


ボイドrtc_set ( ) (
i2c_start ( ) ;
i2c_write ( 0xA2 ) ; / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / /アドレスバイトを送信する

i2c_write ( 0x80を) ; / /停止RTCのカウント
/*************ここに実際の時間****************/
i2c_write (
0x00 )
を 、 / / 100秒
i2c_write (
0x00 )
を 、 / /秒
i2c_write ( RTCの[ 3 ]);//分BCD
( 形式)
i2c_write ( RTCの[ 2 ]);//時間BCD
( フォーマット、 24hour形式)
i2c_write ( RTCの[ 0 ]);//年/日BCD
( 形式)
i2c_write ( RTCの[ 1 ]);//平日/月BCD
( 形式)
i2c_write (
0x00 )
を 、 / /無効タイマ
書き込み/*************アラーム時間****************/
i2c_write ( 0xA0 ) ; / /アラームフラグ
は 、割り込み、タイマーのアラーム、平日アラーム
i2c_write (
0x00 )
を 、 / /秒
の アラーム100
i2c_write (
0x00 )
を 、 / /アラーム秒
i2c_write ( ( ));//アラームalarm.minute分
int2bcdi2c_write ( int2bcd ( alarm.hour ));//アラーム時間
i2c_write (
0x00 )
を 、 / /アラーム日
i2c_write ( (が0x01 < < ( alarm.day - 1 )));//アラーム平日
i2c_stop ( ) ;
delay_ms ( 5 ) ;

i2c_start ();//開始伝送
i2c_write (
0x00 )
を 、 / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / /アドレスバイトを送信
i2c_write ( 0x04 ) ; / /スタートのRTC計数
i2c_stop ( ) ;
delay_ms ( 5 ) ;


 
Szykuje się kolejna mega fuzja w branży technologicznej, gdyż spora a zarazem mało znana firma Avago ogłosiła zamiar kupna bardziej znanego Broadcom'a, płacąc częściowo gotówką, a częściowo własnymi akcjami o łącznej wartości 37 mld dolarów. Powstała po połączeniu tych dwóch producentów półprzewodników firma ma nosić nazwę Broadcom Limited. Jej roc...

Read more...
 
まず私は
、午前 PCF8583を使用していないと言わなければならない。

しかし
、 私はあなたのコードを見て:
i2c_start ();//開始伝送); //send device address

i2c_write (
0x00 )
を 、 / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / /アドレスバイトを送信
i2c_write ( 0x04 ) ; / /スタートのRTC計数
i2c_stop ( ) ;
delay_ms ( 5 ) ;

私はあなたの前のコマンドで使用される場合は
、 デバイスアドレスとして使用する必要があります0xA2と思う。

この役立ちます
希望
 
でご覧になれます: http://www.fernando-heitor.de/pic/projekte/pcf8583/index.htm

あなた の時間、アラーム、イベントPCF8583を使用して完全な例を挙げるだろう。のSAR

 
Cman ;私は
、 入力ミスを犯し
、それ を訂正した。

のSAR ;これは良いサイト。しかし
、 平日のアラームを使用するあらゆる例ではありません。

私はフィリップス社に
自分 の問題を記述している。彼らが私に役立つことを期待する。データシートに存在するための十¥分な情報ではありません。
また、平日のアラームを使用するように
、 それぞれ異なるコードと思って
いる 。成功したとき、私はここにコードを記述します。

 
以前、私keypad.Toによって値アラームと時刻を入力されたRTCを、私は単純なプログラムを書いて取り組んでいることを確認します。
このプログラム
では まず、 23:59:55:00月曜日(私
が書いた000 仮定月曜日、火曜日001 .. 110日曜日)
RTCを することです。
それから、私は火曜日00:00:05:00アラーム時刻として書いている。後に、私はPICを割り込み生産は
、 電源投入。
その代わりに
、 外部割り込みを使用する場合は、アラームは1フラグを読むことができます。制御レジスタのビット。
生産割り込みとは
、 RTCの出力を中断
するため のプルアップ抵抗を接続したアラームフラグのクリアを忘れないでください。
なぜなら、それは
、 オープンコレクタ出力
です 。
#含める< 18F452.h >
#含まれ<string.h>
#含まれ<stdlib.h>
# HS 、プロテクト、 NOWDT 、 NOBROWNOUT 、言えば、 NOLVP
ヒューズ#使用して遅延(クロック= 20000000 )
#を使用するのI2C (マスタがsda = PIN_C4 、 SCLの= PIN_C3 、低速)
#含まれ<lcd.c>
短いINTはex_interrupt
= 0 ;
# INT_EXT
ボイドEXT_ISR ( ) (
= 1 ex_interrupt ;

メインボイド( ) (
バイト気温= 0 ;
enable_interrupts (グローバル) ;
ext_int_edge ( H_TO_L ) ;
set_tris_b (を0x03 ) ;
set_tris_c ( 0xC0 ) ;
set_tris_d ( 0x08 ) ;

i2c_start ( ) ;
i2c_write ( 0xA2 ) ; / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / /アドレスバイトを送信する
/ / RTCを23:59:55:00に月を書く
/ /アラーム時間00:00:05:00火曜日
ですi2c_write ( 0x80を) ; / /制御レジスタ、カウント停止
i2c_write (
0x00 )
を 、 / /フント。秒
のi2c_write ( 0x55 ) ; / /秒
i2c_write ( 0x59 ) ; / /分
i2c_write ( 0x23 ) ; / /営業時間
i2c_write (が0x01 ) ; / / Year_Date
i2c_write (が0x01 ) ; / / Weekday_Month
i2c_write (
0x00 )
を 、 / /タイマ
i2c_write ( 0xA0 ) ; / /アラーム制御レジスタ
i2c_write (
0x00 )
を 、 / /アラームフント。秒
のi2c_write ( 0x05 ) ; / /アラーム秒
i2c_write (
0x00 )
を 、 / /アラーム分
i2c_write (
0x00 )
を 、 / /アラーム時間
i2c_write (
0x00 )
を 、 / /アラーム日
、 平日には影響しているアラーム
i2c_write (が0x02 ) ; / /アラーム平日
i2c_stop ( ) ;
delay_ms ( 5 ) ;

i2c_start ();//再集計を開始
i2c_write ( 0xA2 ) ; / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / /アドレスバイトを送信する
( 0x04 ) i2c_write ;
i2c_stop ( ) ;
delay_ms ( 5 ) ;

/ /あなたに新しい目覚ましアラームレジスタに値を読み込むことができますカウント
停止i2c_start ( ) ;
i2c_write ( 0xA2 ) ; / /デバイスアドレスを送る
i2c_write ( 0x08 ) ; / /アドレスバイトを送信する
i2c_write ( 0xA0 ) ; / /アラーム制御レジスタ
i2c_write (
0x00 )
を 、 / /アラームフント。秒
のi2c_write ( 0x05 ) ; / /アラーム秒
i2c_write (
0x00 )
を 、 / /アラーム分
i2c_write (
0x00 )
を 、 / /アラーム時間
i2c_write (
0x00 )
を 、 / /アラーム日
、 平日には影響しているアラーム
i2c_write (が0x02 ) ; / /アラーム平日
i2c_stop ( ) ;

lcd_init ( ) ;
lcd_gotoxy ( 1,1 ) ;
delay_ms ( 10 ) ;
enable_interrupts ( INT_EXT ) ; / /外部後に設定されているRTCの割り込みを有効にする必要があります。
( 1 ) (
アラームフラグi2c_start ();//レディング
i2c_write ( 0xA2 ) ; / /デバイスアドレスを送る
i2c_write (
0x00 )
を 、 / / RTCのバイトアドレスを送る
データを読み取るためi2c_start ();//再送信を開始
i2c_write ( 0xA3 ) ; / /読みアドレス
気温= i2c_read ( 0 ) ;
i2c_stop ( ) ;
もし( bit_test (気温、 1 ) ) (
lcd_putc ( "フラグ¥¥ Ñ " ) ;


) ex_interrupt (
lcd_putc ( "割り込み¥¥ Ñ " ) ;

もし( bit_test (気温、 1 ) | | ex_interrupt ) (
= 0 harici_interrupt ;
lcd_putc ( "アラームリンギング" ) ;
i2c_start ();//後にアラーム割り込みフラグをクリアする必要があります
i2c_write ( 0xA2 ) ; / /デバイスアドレス
i2c_write (
0x00 )
を 、 / /アドレスバイト
i2c_write ( 0x04 ) ; / /制御レジスタ
i2c_stop ( ) ;
delay_ms ( 60000 ) ;




 

Welcome to EDABoard.com

Sponsor

Back
Top