Ir ao conteúdo
  • Cadastre-se

marczenom

Membro Pleno
  • Posts

    25
  • Cadastrado em

  • Última visita

Reputação

0
  1. Boa noite. Estou com dificuldade de definir o clock interno do PIC18F4550 compilando no mikroc pro for PIC. Meu programa está funcionando, mas, o delay está lento (1s vale mais que 1s no real) e as mensagens do LCD são mostradas com cortes, deslocamentos para outra faixa, etc. Vejam os passos: - new project definindo clock de 8MHZ - defini no programa (segundo datasheet) clock interno de 8MHZ - defini nos fuses (ver figura anexa) Vejam o código: void main(){ // Início void main() OSCCON.IRCF2 = 1; OSCCON.IRCF1 = 1; OSCCON.IRCF0 = 1; TRISA=1; TRISB=1; TRISD=0; TRISE=0; ADCON1=0xF; // Definição I-O O que pode estar acontecendo? Obrigado Marczenom
  2. Cara, eu já tenho um programa com PIC18F4550 compilador MikroC pro For PIC. Faço controle de dois motores em ambos os sentidos. Qual é a sua dificuldade real? É iniciante? Já fez o programa? Já tem noção de programação em C?...???????
  3. Bom dia galera. Estou quase terminando meu programa e não estou conseguindo adicionar informação no display no momento que eu quero. No começo do processo, todas as entradas estão em "0". Logo, na tela deve constar "0" para todos. Quando eu tenho "1", no display, o sensor correspondente deve sair de 0 e ir para "1". Parece fácil, mas quando eu coloco as condições, ele trava em 0, não aparece os demais... um caos!!!! Segue meu programa e a foto de onde eu parei. Só quero atualizar na tela. Estou usando o compilador MikroC pro for PIC. Valeuuu!!! //////////////////////////////////////////////////////////////////////////////// // Configuração do LCD sbit LCD_RS at RD5_bit; // pino 28 sbit LCD_EN at RD6_bit; // pino 29 sbit LCD_D7 at RE2_bit; // pino 10 sbit LCD_D6 at RE1_bit; // pino 09 sbit LCD_D5 at RE0_bit; // pino 08 sbit LCD_D4 at RD7_bit; // pino 30 // Direcionamento dos dados sbit LCD_RS_Direction at TRISD5_bit; // pino 28 sbit LCD_EN_Direction at TRISD6_bit; // pino 29 sbit LCD_D7_Direction at TRISE2_bit; // pino 10 sbit LCD_D6_Direction at TRISE1_bit; // pino 09 sbit LCD_D5_Direction at TRISE0_bit; // pino 08 sbit LCD_D4_Direction at TRISD7_bit; // pino 30 //////////////////////////////////////////////////////////////////////////////// // Variáveis do sistema unsigned short current_duty,current_duty1; char txt1[] = "Painel Solar"; char txt2[] = "PIC18F4550"; char txt3[] = "LCD 4bit"; char txt4[] = "Sistema pronto"; char txt5[] = "S1="; char txt6[] = "S2="; char txt7[] = "S3="; char txt8[] = "S4="; void main(){ // Início void main() TRISA=1; TRISB=1; TRISD=0; TRISE=0; ADCON1=0xF; // Definição I-O // Entradas do sistema #define S1 porta.f1 // Ldr 1 AN1 #define S2 porta.f4 // Ldr 2 AN4 #define S3 portb.f2 // Ldr 3 AN8 #define S4 portb.f3 // Ldr 4 AN9 #define FC porta.f5 // Fim de curso PV AN5 noite #define FB portb.f4 // Fim de curso1 Base AN10 #define FB1 portb.f5 // Fim de curso2 Base AN11 // Saídas do sistema #define P1 portd.f4 // Corta Abre relé L298N (início da noite) (((((RD4)))) #define MA portd.f0 // Motor painel sentido anti-horário #define MH portd.f1 // Motor painel sentido horário #define RA portd.f2 // Motor base sentido anti-horário #define RH portd.f3 // Motor base sentido horário // Configuração PWM Pwm1_init(5000); // CCP2 16 Pwm2_init(5000); // CCP1 17 Pwm1_Start(); Pwm2_Start(); current_duty=127; // 50% current_duty1=127; Pwm1_Set_Duty(current_duty); // Set 1 Pwm2_Set_Duty(current_duty1); // Set 2 //////////////////////////////////////////////////////////////////////// // Interface de visualização 16x2 delay_ms(1000); Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,3,txt1); // Painel Solar delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); delay_ms(1000); Lcd_Out(1,3,txt2); // PIC 18F4550 delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); delay_ms(1000); Lcd_Out(1,3,txt3); // LCD 4 bits delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); delay_ms(1000); Lcd_Out(1,3,txt4); // Sistema pronto delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); delay_ms(1000); Lcd_Out(1,1,txt5); Lcd_Out(2,1,txt6); Lcd_Out(1,10,txt7); Lcd_Out(2,10,txt8); // Aqui eu libero o sistema para operação while(1){ // Início while(1) if((S1==1)&&(S2==1)){ // Intertravamento de rotação MA/MH MA=0; MH=0; } else if((S1==1)&&(FC==1)){ // Parada do fim de curso MA=0; delay_ms(1500); MH=1; delay_ms(1650); MH=0; P1=1; // Abre nível alto do L298N e suspende as rotações delay_ms(10); P1=1; } else if(S1==1){ // Primeiro passo é aqui MA=1; } else if(S1==0){ // Primeiro passo é aqui MA=0; } if((S1==1)&&(S2==1)){ // Intertravamento de rotação MA/MH MA=0; MH=0; } else if(S2==1){ MH=1; } else if(S2==0){ MH=0; } // Fim execução de movimentos do painel superior // Execução da base do painel poucos movimentos (usado estrategicamente) if((S3==1)&&(S4==1)){ // Intertravamento de rotação RA/RH RA=0; RH=0; } else if((S3==1)&&(FB==1)){ // Parada fim de curso RA RA=0; delay_ms(1500); RH=1; delay_ms(2500); RH=0; } else if((S4==1)&&(FB1==1)){ // Parada fim de curso RH RH=0; delay_ms(10); RH=0; RA=1; delay_ms(3000); RA=0; } else if(S3==1){ // Primeiro passo é aqui RA=1; P1=0; delay_ms(10); P1=0; } else if(S3==0){ // Primeiro passo é aqui RA=0; } if((S3==1)&&(S4==1)){ // Intertravamento de rotação RA/RH RA=0; RH=0; } else if(S4==1){ RH=1; } else if(S4==0){ RH=0; } // Fim execução dos movimentos da base do sistema } // Fim while(1) } // Fim void main() início da noite
  4. Acho que o assunto está finalizado meu caro!! !!!!!! Verdade. Na realidade, comprei esse gravador aleatoriamente. Não conhecia PIC, programa em C, nada disso. Sugiro que pesquisem aqui antes da compra. Sds
  5. Boa noite galera. Existe a possibilidade de utilizar o PIC 18F4550 como um relógio? Por exemplo: Acionei o portd.f4 para 1. Quero contar tempo em horas para o port ir à 0. Já pesquisei sobre TIMER, porém, a aplicação difere muito do que eu quero fazer. Assim: portd.f4=1; após 6 horas; portd.f4=0; Isso tira a possibilidade da compra de um TIMER 12v. Meu sistema ficará parado e após x horas, ele é liberado. Desculpem se for muita ignorância minha, mas, estou aprendendo e estou contribuindo nos tópicos de acordo com minha capacidade. Meu compilador é o MiKroC pro for PIC Sds Marc Zenom
  6. Amigo, vá com calma!! Meu K150 não funcionava e após verificação com amigos que já possuem o gravador, soube deste detalhe. Na compra diz que já vem tudo pronto, porém, seria bom verificar este PIC auxiliar. Se tem que utilizar outro gravador, paciência. O meu está funcionando perfeitamente após esta correção. Sds
  7. Bom dia. Este programador K150 tem um PIC 16F628A. você tem que programa-lo com um código hexa que vem com o software do gravador (baixa na net). Somente depois disso que você conseguirá gravar e desgravar os microcontroladores.
  8. Opa. Luiz, agradeço a ajuda. Eu tinha feito um programa parecido hoje e funcionou. O modo de fazer é exatamente igual ao seu. Veja: int tt; void main() { TRISA=1; TRISD=0; adcon1=0b000000000001; CMCON=0xFF; adc_init(); while(1){ tt=adc_read(0); if(tt>590 && tt<640){ portd.f0=1; } else{ portd.f0=0; }}} Fiz a simulação no Proteus e funcionou. Agora vou refazer o mesmo projeto com leituras analógicas para ficar mais elaborado. Eu estava errando anteriormente, pois, colocava no programa a matemática definindo o int tt. Agora sei fazer leitura digital e analógica. Obrigado meu amigo Atte Marc Zenom
  9. Bom dia pessoal. Se alguém ajudar, agradeço. Já terminei um projeto e está funcionando. Usei leituras digitais para mover o sistema. Gostaria de aprender a fazer um controle analógico. A ideia é monitorar 4 LDRs. Assim que um dos sensores ler uma tensão x, ele aciona uma saída qualquer. Isso seria mais eficaz. Coloquei meu programa digital e o circuito que estou tentando acionar com analógico. O compilador é o MikroC pro for PIC e o PIC é 18F4550. Se alguém souber, por favor me ajude. Atualização PV - 03-04-2014.txt

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...