Microchip MDD. Problem med filnamn.
Re: Microchip MDD. Problem med filnamn.
Han använder fel funktion FSOpen tillåter endast 8+3 och ASCII.
Enligt API-dokumentationen skall man använda wFSOpen.
Enligt API-dokumentationen skall man använda wFSOpen.
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Det är samma fel med wFSfopen som med FSfopen. Även om det är 8.3 eller ej.TomasL skrev:FSOpen tillåter enbart 8.3 i ascii, inget annat.
Skall du använda LFN/16 så är det den andra funktionen som gäller.
Sedan innebär normal felsökning alltid, back to the bones.
Detta sk "eviga behov" underlättar felsökning.
Filnamnen har nu endast ett (1) tecken ingen filändelse ens. Och nu ger den upp redan då fil nummer tre skall skapas.
Re: Microchip MDD. Problem med filnamn.
Problemet är alltså inte filnamnen men antal filer som jag förstår det. Detta låter för mig som något minnesproblem, kanske det ska avsättas en viss mängd minne per fil för att rutinen kan fungera ordentligt och detta är inte avsatt.
Re: Microchip MDD. Problem med filnamn.
Stänger du filerna ordentligt innan du öppnar en ny? Kan vara gamla "file handles" som ligger kvar och tar plats och gör att minnet tar slut?
Re: Microchip MDD. Problem med filnamn.
> Och nu ger den upp redan då fil nummer tre skall skapas.
Är det fil nummer tre under samma session med applikationen?
Vad händer om du startar programmet från scratch mot en enhet
som redan har tre filer? Lägger det av direkt då? Eller kan du skapa
tre filer varje gång programmet körs oavsett att det finns tidigare filer?
Är det fil nummer tre under samma session med applikationen?
Vad händer om du startar programmet från scratch mot en enhet
som redan har tre filer? Lägger det av direkt då? Eller kan du skapa
tre filer varje gång programmet körs oavsett att det finns tidigare filer?
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Det är någon märklig kombo av hur långa filnamnen är i samband med hur många filer som existerar i mappen.
Kortare filnamn = fler filer i samma mapp
Längre filnamn = mindre filer i samma mapp.
Jag skall trippelkolla stängningen av filerna när jag får möjlighet igen. Men de första filerna stängs ordentligt. :/
Jag har bara en fil-pekare öppen per gång. Jag kanske ska testa att skapa en parallel för den filen som har ett långt filnamn så att dessa inte kan krocka på något sätt.
Lagrandet av dessa filer sker i en timer interrupt som jag börjar misstänka tar för lång tid att köra. Men detta är bara vilda spekulationer just nu. Har inte bekräftat detta helt än, men det känns spontant som att ju mer jag provar att skriva till filen desto mindre filnamn måste jag använda.
Det blev lite panik nu idag då vi måste lämna detta projekt ett par veckor för att åka tillbaka till Göteborg för att redovisa resultatet av detta examensarbete redan i morgon. Så detta kommer att bli lite släpande nu fram tills nästa gång vi får tillgång till utrustningen igen.
Om någon är intresserad av att se bitar av koden så kan jag posta lite bitar på pastebin.
Kortare filnamn = fler filer i samma mapp
Längre filnamn = mindre filer i samma mapp.
Jag skall trippelkolla stängningen av filerna när jag får möjlighet igen. Men de första filerna stängs ordentligt. :/
Jag har bara en fil-pekare öppen per gång. Jag kanske ska testa att skapa en parallel för den filen som har ett långt filnamn så att dessa inte kan krocka på något sätt.
Lagrandet av dessa filer sker i en timer interrupt som jag börjar misstänka tar för lång tid att köra. Men detta är bara vilda spekulationer just nu. Har inte bekräftat detta helt än, men det känns spontant som att ju mer jag provar att skriva till filen desto mindre filnamn måste jag använda.
Det blev lite panik nu idag då vi måste lämna detta projekt ett par veckor för att åka tillbaka till Göteborg för att redovisa resultatet av detta examensarbete redan i morgon. Så detta kommer att bli lite släpande nu fram tills nästa gång vi får tillgång till utrustningen igen.
Om någon är intresserad av att se bitar av koden så kan jag posta lite bitar på pastebin.
Re: Microchip MDD. Problem med filnamn.
> ...så kan jag posta lite bitar på pastebin.
Är det för att man får någon slags åtkomstkontroll där?
Eller varför inte använda forumet? En ZIP fil med det
rellevanta som den intresserade kan kolla...
Är det för att man får någon slags åtkomstkontroll där?
Eller varför inte använda forumet? En ZIP fil med det
rellevanta som den intresserade kan kolla...

- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Jag gillar pastebins färgsystem, blir lättare att överskåda många rader.
Kod: Markera allt
// Information om vilken fil som arbetas med just nu!
strcpy(filename_string,"INFO.txt");
convert_filename(filename_string, loop_filename_fat32);
pointer = wFSfopen ((const unsigned short int * )&loop_filename_fat32[0], "w");
if (pointer == NULL) // Kan inte öppna filen.
while(1);
append_line_to_file("File information, LOOPLOGGING: ");
append_line_to_file((char *)ascii_enter);
append_line_to_file(" Current working file: ");
int_to_string(loop_file_current,string_temp);
append_line_to_file(string_temp);
append_line_to_file((char *)ascii_enter);
append_line_to_file("Total samples: ");
sprintf(string_temp,"%lld",samples_total);
append_line_to_file(string_temp);
// Avsluta med ett entertecken.
append_line_to_file((char *)ascii_enter);
append_line_to_file("Total days sampled: ");
int_to_string(total_days_sampled,string_temp);
append_line_to_file(string_temp);
append_line_to_file((char *)ascii_enter);
if (FSfclose (pointer))
while(1);
// -------------------------------------------------
// Dag av loop
sprintf(loop_filename_string,"%u",loop_file_current);
//strcat(loop_filename_string,".dat"); // Fil‰ndelse
// Konverterar filnamn till korrekt format fˆr FAT.
convert_filename(loop_filename_string, loop_filename_fat32);
//pointer = FSfopen (loop_filename_string, "w");
pointer = wFSfopen ((const unsigned short int * )&loop_filename_fat32[0], "w");
if (pointer == NULL) // Kan inte ˆppna filen.
while(1);
sprintf(string_temp,"File start sample: %lu",samples_total);
append_line_to_file(string_temp);
sprintf(string_temp,"Current working file: %u",loop_file_current);
append_line_to_file(string_temp);
append_line_to_file((char *)ascii_enter);
get_date();
sprintf(string_temp,"Start date: 20%02u %02u %02u",date[0],date[1],date[2]);
append_line_to_file(string_temp);
append_line_to_file((char *)ascii_enter);
get_time();
sprintf(string_temp,"Start time: %02u:%02u:%02u",time[0],time[1],time[2]);
append_line_to_file(string_temp);
append_line_to_file((char *)ascii_enter);
file_open=1;
Re: Microchip MDD. Problem med filnamn.
Du får med största sannolikhet ett "General Exception".
Har du lagt till kod för att hantera detta, exempel finns både på uChips forum och i PIC32 dokumentationen.
Hur ser interrupthanteraren ut.
Har du lagt till kod för att hantera detta, exempel finns både på uChips forum och i PIC32 dokumentationen.
Hur ser interrupthanteraren ut.
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Jag har inget som hanterar ett general exception.
Sen har jag inga fler interrupthandlers.
Varför får jag ett general exception?
Kod: Markera allt
// enable multi-vector interrupts
INTEnableSystemMultiVectoredInt();
Kod: Markera allt
void __ISR(_CORE_TIMER_VECTOR, ipl2) CoreTimerHandler(void)
Varför får jag ett general exception?
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Har lagt till en handler för general exceptions men den tar aldrig felet.
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Varje gång jag kortar ned koden som skriver till filen så kan jag köra längre.
Nu känns det mer och mer som att den inte hinner klart skrivningen innan nästa interrupt kommer.
Nu känns det mer och mer som att den inte hinner klart skrivningen innan nästa interrupt kommer.
Re: Microchip MDD. Problem med filnamn.
Du måste stänga av interrupten, köra koden, slå på dem igen.
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Jag måste köra detta med 10Hz. Så därför slår jag på interrupten direkt när den börjar.
Kod: Markera allt
void __ISR(_CORE_TIMER_VECTOR, ipl2) CoreTimerHandler(void)
{
Nop();
// clear the interrupt flag
mCTClearIntFlag();
UpdateCoreTimer(core_tick_rate);
- Zajber
- Inlägg: 451
- Blev medlem: 19 oktober 2009, 22:07:16
- Skype: Andreas.fridh85
- Ort: Rödön
- Kontakt:
Re: Microchip MDD. Problem med filnamn.
Nu tror jag att det är löst!!!
Kör:
Varje gång jag stänger filerna, nu funkar det mycket bättre i kortare tester.
Kör:
Kod: Markera allt
strcpy(log_filename_string,"\0\0\0");
strcpy(log_filename_fat32,"\0\0\0");