Ir ao conteúdo
  • Cadastre-se

Ygon

Membro Pleno
  • Posts

    35
  • Cadastrado em

  • Última visita

Reputação

1
  1. Olá pessoal. Sou novo neste microcontrolador de 16bits. Estou programando pelo Mplab 8.53 com o plugin C30. Com a tensão de entrada de 1,5V no pino An1 usar o adc e acionar o pino digital de saída, o RB15. Mas não estou conseguindo. Alguém por favor pode me ajudar? Aqui está meu código: Obs: Tem muitas linhas que deixei como comentário. #include<p33FJ16GS402.h> //Biblioteca para o Pic a ser trabalhado. //Variáveis globais para o adc: float volts; void initAdc1(void) { while(1) //{ //Registros I/O TRISAbits.TRISA1=1; //Registro, pino A1 no modo entrada. TRISBbits.TRISB15=0; //Registro, pino RB15 no modo saída. ADPCFGbits.PCFG1=0; //configurar RA1/AN1 pino 3 como porta analógica. //Configurações ADC ADCONbits.SLOWCLK = 1; /* Ativar o clock divisor lento. 1 = ADC é cronometrado pelo auxiliar PLL (ACLK) */ ADCONbits.FORM=0; // Formato de saída de dados: 0 inteiro. ADCONbits.EIE = 0; /* Disable Early Interrupt */ ADCONbits.ORDER = 0; /* Ordem de conversão de bit. 0 = é convertido os numerados em primeiro lugar, seguido por conversão de entrada com número ímpar*/ ADCONbits.SEQSAMP = 0; /* Amostra sequencial de ativação de bit. 0 = Amostra partilhados e (S & H) circuito é amostrado no início da segunda conversão se ORDEM = 0. Se ORDEM = 1, então o partilhada S & H é amostrado no início da primeira conversão. */ ADCONbits.ADCS=5; //Seleção do Clock conversor de bit. 5(101b)FADC/6 ADCONbits.ADON=1; // ADON Modo de operação dos bits. 1 = Módulo de conversor A / D está operando. ADSTAT = 0; /* Status do registro A/D. 0 = bit é cancelado. */ //IFS6bits.ADCP1IF = 0; /*INTERROMPER FLAG de Registro de Status. 0 = Pedido de interrupção não ocorreu */ //IEC6bits.ADCP1IE = 1; //Habilitação do registro de interrupção. 1 = Pedido de interrupção está habilitado. //ADCON3 = 7938; // Tempo de amostra = 31Tad.Obs : não tem este registro neste modelo. //ADCHS = 1; //Canal Obs : não tem este registro neste modelo. //ADCONbits.SSRC=1; ; // contador termina amostragem e começa a converter. Obs no datasheet. OBS.:Não tem neste modelo. /*IPC3bits.ADIP = 0x01; // Set Common ADC Interrupt Priority Level (Level 1) IFS0bits.ADIF = 0; // Clear ADC Pair 0 Interrupt Flag IEC0bits.ADIE = 1; // Enable ADC Pair 0 Interrupt*/ //ADSTATbits.P0RDY = 0; /* Clear ADC pair ready bit */ //IFS6bits.ADCP0IF = 0; /* Clear ADC Interrupt Flag */ /*ADSTATbits.P0RDY: Dados de conversão para o par 0 bit Pronto Bit é definido quando os dados estão prontos em tampão, limpo quando um '0' é escrito para este bit.*/ //volts = (volts *(3,3/1023)); timer_100us(2); ADCBUF1 = volts; // obter a medição de tensão. if (volts>=465) // 465/1023 = 0,45 (fração do fornecimento de energia 3.3volt do PIC) { // 0,45 * 3.3volts = 1.5volts (realmente lêem no pino ADC) LATBbits.LATB15 = 1; } else LATBbits.LATB15 = 0; }//Fim do while }//Fim adc
  2. Sempre que coloco algo neste fórum fico no vácuo. Valeu!
  3. Olá pessoal. Estou usando o RTC DS 1307 que por sinal funcionou por mais ou menos uma hora normal, configurando a data e relógio certinho. Porém, depois não consegui mais reescrever mais. Estou monitorando pelo Serial Monitor e realmente posso resetar, reinstalar o programa que funcionava antes e nada. Não sai mais disso: 2099/10/10 1:3:20 Será problema no shield mesmo ou estou fazendo algo de errado? Se alguém poder me ajudar agradeço! Este é o código que estou utilizando, sendo um dos exemplos da biblioteca "RTClib.h" // Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include <Wire.h> #include "RTClib.h" RTC_DS1307 rtc; void setup () { Serial.begin(57600); #ifdef AVR Wire.begin(); #else Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due #endif rtc.begin(); if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: rtc.adjust(DateTime(11, 9, 2014, 14, 2, 9)); } } void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future DateTime future (now.unixtime() + 7 * 86400L + 30); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(1000); }
  4. Olá pessoal. Tive um problema com a placa mãe do meu notebook Dell. Um parafuso soltou e deu um curto entre dois capacitores, resultando que agora a placa não aciona. Limpei e visualisei aonde o pequeno curto carbonizou a placa, porém, não consigo informações a respeito desses capacitores situados no código no layout da placa: PC 127 e PC 128. Se alguém souber informações sobre essa placa ou se tiver alguma documentação mostrando os valores dos componentes em si, será de grande ajuda. Obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...