Página 1 de 1

Problemas com mikro C

MensagemEnviado: 10 Nov 2008 16:00
por lasfclestat
Prezados

Estou começando agora a utilizar o MiKroC e o MiKroBasic.

Estou fazendo um programa para o PIC 16F628A, para fazer a gravação eu estou importando o arquivo .hex gerado e utilizando o ICD2.
O código compila corretamente, mais não esta funcionando, não acontece absolutamente nada.

Os códigos que eu estou utilizando esta descrito abaixo:

Código: Selecionar todos

MikroC

1-)

unsigned short i;

void main() {
   USART_init(19200);
   TRISB = 0b00001011;
   i = 0x41;
   while (1) {
       USART_Write(i);
       PORTB.F4 = 0;
       PORTB.F5 = 1;
       PORTB.F6 = 0;
       PORTB.F7 = 1;
       delay_ms(2000);
       USART_Write(i);
       PORTB.F4 = 1;
       PORTB.F5 = 0;
       PORTB.F6 = 1;
       PORTB.F7 = 0;
       delay_ms(2000);
       i++;
     }
}

2-)

unsigned short i;

void main() {
   USART_init(19200);
   i = 0x41;
   while (1) {                     
       USART_Write(i);                   
       delay_ms(500);
       i++;
     }
}

3-)
void main()
{
   Soft_Uart_Init(PORTB, 1, 2, 19200, 0);
   while (1) {
       Soft_Uart_Write(0x41);
       delay_ms(500);
     }
}

4-)

void main()
{
   USART_init(9600);                   

   PORTA = 0;               
   TRISA = 0b00100000;         
   PORTB = 0;               
   TRISB = 0b00001011;
   OPTION_REG = 0b10000111;
   INTCON = 0b11010000;
   PIE1= 0b00100000;
   
   while (1)
   {
       PORTA.F4 = 0;
       PORTA.F3 = 1;
       delay_ms(2000);
       USART_Write(0x41);                   
       PORTA.F4 = 1;
       PORTA.F3 = 0;
       delay_ms(2000);
       USART_Write(0x51);
   }
}

MiKroBasic

main:
  PORTB = 0               
  TRISB = 0               

  while TRUE
    PORTB = not PORTB     
    Delay_ms(1000)         
  wend
end.



Eu fiz o mesmo programa com o PCWH e funcionou corretamente no meu hardware.
Alguem poderia me ajudar, ou me dar uma dica do que esta acontecendo?

E estou usando o MiKro C 8.2.0.0 e o Mikro Basic 7.0.0.2

Obrigado.

MensagemEnviado: 11 Nov 2008 07:52
por ffcprog
amigo, ao criar o projeto.
Você esta configurando os fuses, e clock corretamente ?

ffcprog.

MensagemEnviado: 11 Nov 2008 09:30
por lasfclestat
Bem, eu estou configurando da seguinte maneira...

clock 4.000000 Mhz

WDT_OFF
LVP_OFF
MCLRE_ON
HS_OSC

fiz o teste agora com esta configuração:

clock 4.000000 Mhz

WDT_OFF
LVP_OFF
MCLRE_ON
HS_OSC
BODEN_OFF
BOREN_OFF
CP_OFF
DATA_CP_OFF
PWRTE_OFF

e funcionou...

Obrigado pela dica... :wink:

MensagemEnviado: 11 Nov 2008 11:51
por otavio luiz
Se voce esta utilizando clock de 4mhz, então voce deve configurar o oscilador com XT e não como HS.

MensagemEnviado: 11 Nov 2008 12:48
por lasfclestat
Já modifiquei isso, obrigado....

MensagemEnviado: 11 Nov 2008 13:18
por fabio_pic
Vale lembrar que as funções para porta serial travam o pic. Não lembro que versão faz isso.
Procure pesquisar nesse sentido.

Abraços,
Fábio.

MensagemEnviado: 11 Nov 2008 13:19
por fabio_pic
Funções do MikroC.....

Fábio.

MensagemEnviado: 11 Nov 2008 13:27
por lasfclestat
Eu estou usando a versão 8.2.0.0, e por enquanto não travou...
estou usando a Usart por hardware....

Estou passando o resto do código que eu tinha no CCS para o mikro C...
Estou usando a recepção via interrupção...

[]s

MensagemEnviado: 24 Nov 2008 15:11
por lasfclestat
Pessoal

Estive continuando a fazer minha implementação, e estou tendo dificuldade em alterar o estado das seguintes port (porta.F0, Porta.F1, porta.F2 e porta.F3), no caso do PIC16F628A essas 4 port, funciona também como entrada analogia.
Abaixo está um código que eu fiz para testar os saídas que eu preciso, apenas essas 4 port citado acima não esta funcionando.

Código: Selecionar todos
void initial_setup_pic(void);

void main(void)
{
   delay_ms (1);
   initial_setup_pic();
   do
   {
      PORTA.F0 = 1;
      PORTA.F1 = 1;
      PORTA.F2 = 1;
      PORTA.F3 = 1;
      PORTA.F4 = 1; 
      PORTB.F3 = 1;
      PORTB.F4 = 1;
      PORTB.F5 = 1;
      delay_ms (2200);
      PORTA.F0 = 0;
      PORTA.F1 = 0;
      PORTA.F2 = 0;
      PORTA.F3 = 0;
      PORTA.F4 = 0;
      PORTB.F3 = 0;
      PORTB.F4 = 0;
      PORTB.F5 = 0;
      delay_ms (2200);
   } while (1);
}

void initial_setup_pic(void)
{
   USART_init(19200);
   PORTA = 0b00100000;
   PORTB = 0b00000000;
   TRISA = 0b00100000;
   TRISB = 0b00000000;
   CCP1CON = 0x00;
   PIE1.RCIE = 1;
   INTCON = 0b11010000;
   OPTION_REG = 0b10001111;
   delay_us(5);
}


As outras configurações são :

clock 4.000000 Mhz

WDT_OFF
LVP_OFF
MCLRE_ON
HS_OSC
BODEN_OFF
BOREN_OFF
CP_OFF
DATA_CP_OFF
PWRTE_OFF

Alguem poderia me ajudar?

Obrigado

MensagemEnviado: 24 Nov 2008 15:36
por otavio luiz
voce tem que desligar os comparadores, registrador cmcon.

MensagemEnviado: 24 Nov 2008 15:56
por lasfclestat
Então, no registrado CCP1CON eu deixei desligado o Capture,Compare e PWM.
    CCP1CON – CCP OPERATION REGISTER
    U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
    — — CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0

    bit 3-0 CCP1M<3:0>: CCPx Mode Select bits
    0000 = Capture/Compare/PWM off (resets CCP1 module)
    0100 = Capture mode, every falling edge
    0101 = Capture mode, every rising edge
    0110 = Capture mode, every 4th rising edge
    0111 = Capture mode, every 16th rising edge
    1000 = Compare mode, set output on match (CCP1IF bit is set)
    1001 = Compare mode, clear output on match (CCP1IF bit is set)
    1010 = Compare mode, generate software interrupt on match (CCP1IF bit is set, CCP1 pin is unaffected)
    1011 = Compare mode, trigger special event (CCP1IF bit is set; CCP1 resets TMR1
    11xx = PWM mode
Agora o CMCON não achei nenhum flag para desligar o comparador, os flags nele apenas configura o modo de operação dos comparadores, se não estou enganado
    CMCON – COMPARATOR CONFIGURATION REGISTER
    R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
    C2OUT C1OUT C2INV C1INV CIS CM2 CM1 CM0

    C2OUT: Comparator 2 Output bit
    C1OUT: Comparator 1 Output bit
    C2INV: Comparator 2 Output Inversion bit
    C1INV: Comparator 1 Output Inversion bit
    CIS: Comparator Input Switch bit
    C2 VIN- connects to RA1
    CM<2:0>: Comparator Mode bits

Eu acabei de fazer o teste, fazendo CMCON = 0x00; porém não mudou nada...

Eu acabei de tentar tambem alterar o estado com instrução em assembler, porém não funcionou...

configure o cmcon

MensagemEnviado: 24 Nov 2008 15:57
por r.bertini
Configura o cmcon com o valor 0x07 que vai funcionar

MensagemEnviado: 24 Nov 2008 16:03
por lasfclestat
Funcionou

Pessoal, mais uma vez obrigado pela ajuda...