DIAGRAMA DE BLOCOS PINAGEM

Documentos relacionados
Capítulo 2: Introdução à Linguagem C

INF 1005 Programação I

Sistemas Microcontrolados

Manual dos comandos em Modbus-RTU

Entradas/Saídas. Programação por espera activa Programação por interrupções

Medição de Temperatura com DS1820

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Prática 8: Comunicação SPI. 8.1 Introdução e objetivos. 8.2 Princípios básicos do protocolo SPI

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Representação de Dados (inteiros não negativos)

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

Programação C para microcontroladores PIC

Interface Hardware/Software. Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Representação de Dados (inteiros não negativos)

Modelagem de banco de dados com MySQL Workbench

Manual Técnico Interface Modbus

ABB Automação kV 119.4kA kV 121.3kA kV 120.2kA IDR 144 INDICADOR DIGITAL REMOTO MODO DE USO

Aperfeiçoamento Técnico com respeito ao Profissional.

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO

PROGRAMAÇÃO ORIENTADA A OBJETOS II -CRIANDO UM BD POSTGRESQL. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL

Real Time Clock MC146818A,DS12C887

Componentes da linguagem C++

Algoritmos e Programação Estruturada

Introdução a C Tipos de Dados Variáveis Operadores

PROGRAMAÇÃO DO TREINAMENTO:

Sistemas Embarcados. Introdução aos sistemas embarcados

Variáveis e Comandos de Atribuição

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Comunicação USB com o PIC Vitor Amadeu Souza Parte II vitor@cerne-tec.com.br

Programação Básica em Arduino Aula 2

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Introdução a Programação de Jogos

Tipos de Dados Simples

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Acetatos de apoio às aulas teóricas

Manual HDBS Revisão 1.1

O protocolo I2C. Fig. 1 Diagrama em blocos e pinos do circuito integrado PT2313.

Princípios de Desenvolvimento de Algoritmos MAC122

Magelis. Configuração do relógio do Twido via IHM Magelis Função Set PLC Clock

Tipo de Dados em Linguagem C

Técnicas de Programação: ESTRUTURAS, UNIÕES E TIPOS DEE UFPB

Edeyson Andrade Gomes

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Barramentos ISA e PCI. Gustavo G. Parma

Introdução à Computação MAC0110

EL68E Sistemas Embarcados Prof. Douglas RENAUX

Instituto Federal de Educação, Ciência e Tecnologia da Paraíba. Microcontrolador PIC 16F877

Sistemas Microcontrolados

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Persistência de Dados

Sintaxe da linguagem Java

Nota de Aplicação IHM 002

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Algoritmos e Programação

PIC16F628a. Pinagem do PIC16F628a:

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Manipulação de Arquivos

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

LINGUAGEM C. Estrutura básica de um programa

Exemplos de Programas em C para o 8051 para o compilador crossware EEL Prof. Raimes Moraes

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Sistemas Embebidos I , Tiago Miguel Dias ISEL, ADEETC - Secção de Eletrónica e Telecomunicações e de Computadores

Arquitetura de Computadores. Arquitetura de Computadores 1

Fundamentos de Arquivos e Armazenamento Secundário

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Arduino Lab 03 Display LCD TFT 1,44 e RTC MCP79410

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

Motores I Automação I Energia I Transmissão & Distribuição I Tintas. Modbus RTU PLC300. Manual do Usuário

Curso introdutório de microcontroladores - Plataforma Arduino

Revisão C++ - Parte 1

Sistemas Embebidos I , Tiago Miguel Dias ISEL, ADEETC - Secção de Eletrónica e Telecomunicações e de Computadores

Sistemas Microcontrolados

Linguagem C: Introdução

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Protocolo Profibus Profibus Protocol Protocolo Profibus Manual do Usuário User s Manual Manual del Usuario

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Transcrição:

PCF8583 O PCF8583 É UM RTC (REAL TIME CLOCK) DESENVOLVIDO PELA PHILIPS SEMICONDUCTOR. COMO CARACTERÍSTICAS PRINCIPAIS SÃO: INTERFACE I2C FUNÇÃO DE CLOCK E CALENDÁRIO REGISTRADORES ENDEREÇAVEIS (HH,MM...) 240 BYTES DE RAM, ALÉM DOS CITADOS ACIMA CRISTAL DE 32768Hz FORMATO DE HORA: 24 OU 12 INCREMENTO DE ENDEREÇO AUTOMÁTICO ALARME PROGRAMÁVEL, COM INTERRUPÇÃO ENDEREÇO DO ESCREVO (LEITURA) A1 ENDEREÇO DO ESCRAVO (ESCRITA) A0

DIAGRAMA DE BLOCOS PINAGEM

CONTROL/STATUS REGISTER

REGISTROS FORMATO DA HORA OS DADOS SÃO ARMAZENADOS EM FORMATO BCD 4+4 NIBLES = EXEMPLO 64 SEGUNDOS = 01100100

SETANDO HORA unsigned char sec, min1, hr, day, mn, year; void Read_Time(char *sec, char *min, char *hr, char *day, char *mn, char *year) I2C_Start(); I2C_Wr(0xA0); I2C_Wr(2); I2C_Repeated_Start(); I2C_Wr(0xA1); *sec =I2C_Rd(1); *min =I2C_Rd(1); *hr =I2C_Rd(1); *day =I2C_Rd(1); *mn =I2C_Rd(0); I2C_Stop(); //~ void Transform_Time(char *sec, char *min, char *hr, char *day, char *mn, char *year) *sec = ((*sec & 0xF0) >> 4)*10 + (*sec & 0x0F); *min = ((*min & 0xF0) >> 4)*10 + (*min & 0x0F); *hr = ((*hr & 0xF0) >> 4)*10 + (*hr & 0x0F); *year = (*day & 0xC0) >> 6; *day = ((*day & 0x30) >> 4)*10 + (*day & 0x0F); *mn = ((*mn & 0x10) >> 4)*10 + (*mn & 0x0F); //~ void main() Soft_I2C_Config(&PORTD, 4,3); // Initialize full master mode Soft_I2C_Start(); // Issue start signal Soft_I2C_Write(0xA0); // Address PCF8583 Soft_I2C_Write(0); // Start from word at address 0 (config word) Soft_I2C_Write(0x80); // Write 0x80 to config. (pause counter...) Soft_I2C_Write(0); // Write 0 to cents word Soft_I2C_Write(0); // Write 0 to seconds word Soft_I2C_Write(0x30); // Write 0x30 to minutes word Soft_I2C_Write(0x11); // Write 0x11 to hours word Soft_I2C_Write(0x30); // Write 0x24 to year/date word Soft_I2C_Write(0x08); // Write 0x08 to weekday/month Soft_I2C_Stop(); // Issue stop signal Soft_I2C_Start(); // Issue start signal Soft_I2C_Write(0xA0); // Address PCF8530 Soft_I2C_Write(0); // Start from word at address 0 Soft_I2C_Write(0); // Write 0 to config word (enable counting) Soft_I2C_Stop(); // Issue stop signal While(1) Read_Time(&sec,&min1,&hr,&day,&mn,&year); Transform_Time(&sec,&min1,&hr,&day,&mn,&year); //~! Extras

//Relogio DS1307 //Acerta hora unsigned char txt[6]; //utilizada para conversao de binario para txt para ser impresso short hora_atual; short minuto_atual; short segundo_atual; void Escreve_Memoria(unsigned int endereco, unsigned char dado); unsigned char Le_Memoria(unsigned int endereco); //Passa como parametro as hora em binario (decimal) e entao converte para BCD //para acertar a hora... void acerta_hora(short hora, short minuto, short segundo) short hora_bcd; short minuto_bcd; short segundo_bcd; hora_bcd = (hora / 10) * 16 + (hora % 10); minuto_bcd = (minuto / 10) * 16 + (minuto % 10); segundo_bcd = (segundo / 10) * 16 + (segundo % 10); Escreve_Memoria(0,segundo_bcd); //11 segundos Escreve_Memoria(1,minuto_bcd); //11 minutos Escreve_Memoria(2,hora_bcd); //11 horas //Passa como parametro tres variaveis que receberao a hora //A hora lida é em bcd e deve novamente ser transformada em Binario para o usuário void le_hora(short *hora, short *minuto, short *segundo) short hora_binario; short minuto_binario; short segundo_binario; segundo_binario = Le_Memoria(0); minuto_binario = Le_Memoria(1); hora_binario = Le_Memoria(2); *hora = ((hora_binario & 0xF0) / 16) * 10 + (hora_binario & 0x0F); *minuto = ((minuto_binario & 0xF0) / 16) * 10 + (minuto_binario & 0x0F); *segundo = ((segundo_binario & 0xF0) / 16) * 10 + (segundo_binario & 0x0F); void Escreve_Memoria(unsigned int endereco, unsigned char dado) I2C1_Start(); // issue I2C start signal I2C1_Wr(0xD0); // send byte via I2C (device address + W) I2C1_Wr(endereco); // send byte (address of EEPROM location) I2C1_Wr(dado); // send data (data to be written) I2C1_Stop(); delay_ms(16);

unsigned char Le_Memoria(unsigned int endereco) unsigned char dado_lido; I2C1_Start(); // issue I2C start signal I2C1_Wr(0xD0); // send byte via I2C (device address + W) I2C1_Wr(endereco); // send byte (address of EEPROM location) I2C1_Repeated_Start(); // issue I2C signal repeated start I2C1_Wr(0xD1); // send byte (device address + R) dado_lido = I2C1_Rd(0u); // Read the data (NO acknowledge) I2C1_Stop(); return(dado_lido); void main() I2C1_Init(100000); Delay_ms(100); UART1_Init(9600); Delay_ms(100); // initialize I2C communication // Wait for UART module to stabilize // Initialize UART module at 9600 bps // Wait for UART module to stabilize UART1_Write_Text("Start"); //Acerta hora para 11:11:11 hora_atual = 11; minuto_atual = 12; segundo_atual = 17; acerta_hora(hora_atual,minuto_atual,segundo_atual); UART1_Write_Text("CELESC INFORMA..."); while(1) le_hora(&hora_atual,&minuto_atual,&segundo_atual); UART1_Write(13); UART1_Write(10); //converte inteiro para string inttostr(hora_atual,txt); UART1_Write_Text(txt); UART1_Write_Text(":"); //converte inteiro para string inttostr(minuto_atual,txt); UART1_Write_Text(txt); UART1_Write_Text(":"); //converte inteiro para string inttostr(segundo_atual,txt); UART1_Write_Text(txt); delay_ms(1000);