Hello,
My problem Mmc_Fat_Append () function.
When I put this function in my program PIC mikrocontroler does not work.
I'm interested in what happens?
Tnx in advance...
function in mikroc
-
- Posts: 619
- Joined: 05 Jul 2008 06:05
- Location: Thailand
Re: function in mikroc
Hi Velimir, this could happen for many reasons, can you post your code along with PIC details, clock speed, etc?
Re: function in mikroc
Hi, first thank you for your repay.
I have send my program code.
[/color]
MCU is PIC18F4520, clock speed is 8 MHz. I have MMC/SD Board from Mikroelektronika, and my program work's when I disabled Mmc_Fat_Append() function.
I try evirthing, but...
Thank in advance..
I have send my program code.
Code: Select all
#include <built_in.h>
[color=#00BF40] //------------INICIJALIZACIJA PROMENLJIVIH--------------------;
unsigned short mmc_errort,brojac_ivica=10;
unsigned short loop,loop2,brzina;
char file_content_n[512],databuffer[512];
char file_content_s[9];
char file_content_b[11];
char Ime_strujnog_Fajla[10];
char Ime_Fajla_Za_Brzinu[10];
char Ime_Naponskog_Fajla[10] ;
unsigned long tlong,Upisana_Brzina ;
char ch;
unsigned long Mereni_Napon;
signed long Merena_Struja,Izmerena_Brzina;
unsigned long sector=0,brupisa=0;
unsigned brojac=0,pokazivac=0;
Kreiranje_Fajla_Napon() {
Ime_Naponskog_Fajla[0] = 'N';
Ime_Naponskog_Fajla[1] = 'A';
Ime_Naponskog_Fajla[2] = 'P';
Ime_Naponskog_Fajla[3] = 'A';
Ime_Naponskog_Fajla[4] = 'N';
Ime_Naponskog_Fajla[5] = 'T';
Ime_Naponskog_Fajla[6] = 'X';
Ime_Naponskog_Fajla[7] = 'T';
Mmc_Fat_Assign(&Ime_Naponskog_Fajla,0xA0);
file_content_n[brojac]=54;
file_content_n[brojac+1]=55;
file_content_n[brojac+2]=32;
file_content_n[brojac+3]=51;
file_content_n[brojac+4]=50;
file_content_n[brojac+5]=53;
file_content_n[brojac+6]=32;
file_content_n[brojac+7]=32;
brojac=brojac+8;
pokazivac++;
if(pokazivac==54){
[u]Mmc_Fat_Append();[/u]
Mmc_Fat_Write(file_content_n,512); // UPIS PODATAKA U POSTOJE?I FAJL ;
pokazivac=0;
brojac=0;
}
}
//---------- PREKIDNA RUTINA-------------
//---- MAIN-----
void main() {
//---- PODEŠAVANJE REGISTARA-----
TRISA = 0xFF; // PORTA ULAZNI
TRISB = 0x00; // PORTB IZLAZNI
TRISC = 0x173; // RC7,RC3 I RC2 SU IZLAZNI
PORTB = 0xF0; // RB7, RB6, RB5, RB4 = 1
TMR0L = 96; // PO?RTNA VREDNOST TAJMERA
INTCON = 0xA0; // DOZVOLA PREKIDA, DOZVOLA PREKIDA NA TAJMERU 0
INTCON2 = 0x84; // PREKIDI BEZ PRIORITETE
ADCON1 = 0x80; // PODEŠAVANJE AN PINOVA KAO ANALOGNI
CMCON |= 7; // ISKLJU?IVANJE KOMPARATORA
Delay_100ms(); // PAUZA 100 mS
T0CON = 0xC4; // PODEŠAVANJE TAJMERA
CCP1CON = 0x05; // UKLJU?IVANJE CAPTURE MODA NA PINU RC2
PIE1 = 0x04; // DOZVOLA PREKIDA NA PINU RC2 NA RASTU?U IVICU SIGNALA
PIR1 = 0x00; // ISPITIVANJE PREKIDA
brojac=0;
// SPI INICIJALIZACIJA
Spi_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH);
// MMC INICIJALIZACIJA
while (Mmc_Init(&PORTC,0));
Delay_100ms(); // PAUZA 100 mS
PORTB = 0xA0;
Delay_100ms();
// MMC FAT INICIJALIZACIJA
if (!Mmc_Fat_Init(&PORTC,0)){
PORTB = 0xF0;
Delay_100ms();
// SPI INICIJALIZACIJA, POVECANA FREKVENCIJA OSCILATORA
Spi_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH);
PORTB = 0x50;
Delay_100ms();
}
// ULAZAK U PETLJU KADA PROdjE 1s
while(1){ // KADA cnt DO?E DO 800, PROTEKLO VREME JE 1s
// RESETOVANJE BROJA?A cnt
PORTB = ~PORTB; // PROMENA PORTA B (TEST)
Kreiranje_Fajla_Napon(); // POZIVANJE FUNKCIJE ZA KREIRANJE FAJLA 1
Delay_100ms();
}
}
MCU is PIC18F4520, clock speed is 8 MHz. I have MMC/SD Board from Mikroelektronika, and my program work's when I disabled Mmc_Fat_Append() function.
I try evirthing, but...
Thank in advance..
Re: function in mikroc
Velimir wrote:Hi, first thank you for your repay.
I have send my program code.
[/color]Code: Select all
#include <built_in.h> [color=#00BF40] //------------INICIJALIZACIJA PROMENLJIVIH--------------------; unsigned short mmc_errort,brojac_ivica=10; unsigned short loop,loop2,brzina; char file_content_n[512],databuffer[512]; char file_content_s[9]; char file_content_b[11]; char Ime_strujnog_Fajla[10]; char Ime_Fajla_Za_Brzinu[10]; char Ime_Naponskog_Fajla[10] ; unsigned long tlong,Upisana_Brzina ; char ch; unsigned long Mereni_Napon; signed long Merena_Struja,Izmerena_Brzina; unsigned long sector=0,brupisa=0; unsigned brojac=0,pokazivac=0; Kreiranje_Fajla_Napon() { Ime_Naponskog_Fajla[0] = 'N'; Ime_Naponskog_Fajla[1] = 'A'; Ime_Naponskog_Fajla[2] = 'P'; Ime_Naponskog_Fajla[3] = 'A'; Ime_Naponskog_Fajla[4] = 'N'; Ime_Naponskog_Fajla[5] = 'T'; Ime_Naponskog_Fajla[6] = 'X'; Ime_Naponskog_Fajla[7] = 'T'; Mmc_Fat_Assign(&Ime_Naponskog_Fajla,0xA0); file_content_n[brojac]=54; file_content_n[brojac+1]=55; file_content_n[brojac+2]=32; file_content_n[brojac+3]=51; file_content_n[brojac+4]=50; file_content_n[brojac+5]=53; file_content_n[brojac+6]=32; file_content_n[brojac+7]=32; brojac=brojac+8; pokazivac++; if(pokazivac==54){ [u]Mmc_Fat_Append();[/u] Mmc_Fat_Write(file_content_n,512); // UPIS PODATAKA U POSTOJE?I FAJL ; pokazivac=0; brojac=0; } } //---------- PREKIDNA RUTINA------------- //---- MAIN----- void main() { //---- PODEŠAVANJE REGISTARA----- TRISA = 0xFF; // PORTA ULAZNI TRISB = 0x00; // PORTB IZLAZNI TRISC = 0x173; // RC7,RC3 I RC2 SU IZLAZNI PORTB = 0xF0; // RB7, RB6, RB5, RB4 = 1 TMR0L = 96; // PO?RTNA VREDNOST TAJMERA INTCON = 0xA0; // DOZVOLA PREKIDA, DOZVOLA PREKIDA NA TAJMERU 0 INTCON2 = 0x84; // PREKIDI BEZ PRIORITETE ADCON1 = 0x80; // PODEŠAVANJE AN PINOVA KAO ANALOGNI CMCON |= 7; // ISKLJU?IVANJE KOMPARATORA Delay_100ms(); // PAUZA 100 mS T0CON = 0xC4; // PODEŠAVANJE TAJMERA CCP1CON = 0x05; // UKLJU?IVANJE CAPTURE MODA NA PINU RC2 PIE1 = 0x04; // DOZVOLA PREKIDA NA PINU RC2 NA RASTU?U IVICU SIGNALA PIR1 = 0x00; // ISPITIVANJE PREKIDA brojac=0; // SPI INICIJALIZACIJA Spi_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH); // MMC INICIJALIZACIJA while (Mmc_Init(&PORTC,0)); Delay_100ms(); // PAUZA 100 mS PORTB = 0xA0; Delay_100ms(); // MMC FAT INICIJALIZACIJA if (!Mmc_Fat_Init(&PORTC,0)){ PORTB = 0xF0; Delay_100ms(); // SPI INICIJALIZACIJA, POVECANA FREKVENCIJA OSCILATORA Spi_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH); PORTB = 0x50; Delay_100ms(); } // ULAZAK U PETLJU KADA PROdjE 1s while(1){ // KADA cnt DO?E DO 800, PROTEKLO VREME JE 1s // RESETOVANJE BROJA?A cnt PORTB = ~PORTB; // PROMENA PORTA B (TEST) Kreiranje_Fajla_Napon(); // POZIVANJE FUNKCIJE ZA KREIRANJE FAJLA 1 Delay_100ms(); } }
MCU is PIC18F4520, clock speed is 8 MHz. I have MMC/SD Board from Mikroelektronika, and my program work's when I disabled Mmc_Fat_Append() function.
I try evirthing, but...
Thank in advance..
Re: function in mikroc
HELP...Velimir wrote:Velimir wrote:Hi, first thank you for your repay.
I have send my program code.
[/color]Code: Select all
#include <built_in.h> [color=#00BF40] //------------INICIJALIZACIJA PROMENLJIVIH--------------------; unsigned short mmc_errort,brojac_ivica=10; unsigned short loop,loop2,brzina; char file_content_n[512],databuffer[512]; char file_content_s[9]; char file_content_b[11]; char Ime_strujnog_Fajla[10]; char Ime_Fajla_Za_Brzinu[10]; char Ime_Naponskog_Fajla[10] ; unsigned long tlong,Upisana_Brzina ; char ch; unsigned long Mereni_Napon; signed long Merena_Struja,Izmerena_Brzina; unsigned long sector=0,brupisa=0; unsigned brojac=0,pokazivac=0; Kreiranje_Fajla_Napon() { Ime_Naponskog_Fajla[0] = 'N'; Ime_Naponskog_Fajla[1] = 'A'; Ime_Naponskog_Fajla[2] = 'P'; Ime_Naponskog_Fajla[3] = 'A'; Ime_Naponskog_Fajla[4] = 'N'; Ime_Naponskog_Fajla[5] = 'T'; Ime_Naponskog_Fajla[6] = 'X'; Ime_Naponskog_Fajla[7] = 'T'; Mmc_Fat_Assign(&Ime_Naponskog_Fajla,0xA0); file_content_n[brojac]=54; file_content_n[brojac+1]=55; file_content_n[brojac+2]=32; file_content_n[brojac+3]=51; file_content_n[brojac+4]=50; file_content_n[brojac+5]=53; file_content_n[brojac+6]=32; file_content_n[brojac+7]=32; brojac=brojac+8; pokazivac++; if(pokazivac==54){ [u]Mmc_Fat_Append();[/u] Mmc_Fat_Write(file_content_n,512); // UPIS PODATAKA U POSTOJE?I FAJL ; pokazivac=0; brojac=0; } } //---------- PREKIDNA RUTINA------------- //---- MAIN----- void main() { //---- PODEŠAVANJE REGISTARA----- TRISA = 0xFF; // PORTA ULAZNI TRISB = 0x00; // PORTB IZLAZNI TRISC = 0x173; // RC7,RC3 I RC2 SU IZLAZNI PORTB = 0xF0; // RB7, RB6, RB5, RB4 = 1 TMR0L = 96; // PO?RTNA VREDNOST TAJMERA INTCON = 0xA0; // DOZVOLA PREKIDA, DOZVOLA PREKIDA NA TAJMERU 0 INTCON2 = 0x84; // PREKIDI BEZ PRIORITETE ADCON1 = 0x80; // PODEŠAVANJE AN PINOVA KAO ANALOGNI CMCON |= 7; // ISKLJU?IVANJE KOMPARATORA Delay_100ms(); // PAUZA 100 mS T0CON = 0xC4; // PODEŠAVANJE TAJMERA CCP1CON = 0x05; // UKLJU?IVANJE CAPTURE MODA NA PINU RC2 PIE1 = 0x04; // DOZVOLA PREKIDA NA PINU RC2 NA RASTU?U IVICU SIGNALA PIR1 = 0x00; // ISPITIVANJE PREKIDA brojac=0; // SPI INICIJALIZACIJA Spi_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH); // MMC INICIJALIZACIJA while (Mmc_Init(&PORTC,0)); Delay_100ms(); // PAUZA 100 mS PORTB = 0xA0; Delay_100ms(); // MMC FAT INICIJALIZACIJA if (!Mmc_Fat_Init(&PORTC,0)){ PORTB = 0xF0; Delay_100ms(); // SPI INICIJALIZACIJA, POVECANA FREKVENCIJA OSCILATORA Spi_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE, CLK_IDLE_HIGH, LOW_2_HIGH); PORTB = 0x50; Delay_100ms(); } // ULAZAK U PETLJU KADA PROdjE 1s while(1){ // KADA cnt DO?E DO 800, PROTEKLO VREME JE 1s // RESETOVANJE BROJA?A cnt PORTB = ~PORTB; // PROMENA PORTA B (TEST) Kreiranje_Fajla_Napon(); // POZIVANJE FUNKCIJE ZA KREIRANJE FAJLA 1 Delay_100ms(); } }
MCU is PIC18F4520, clock speed is 8 MHz. I have MMC/SD Board from Mikroelektronika, and my program work's when I disabled Mmc_Fat_Append() function.
I try evirthing, but...
Thank in advance..