Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Fehler beim Schreiben auf SDC & Autostart Kategorie: CC-Pro Unit & Appl.Board (von Udo - 4.12.2013 22:20)
Als Antwort auf Fehler beim Schreiben auf SDC & Autostart von Udo - 3.12.2013 17:21
Ich nutze:
CC-Pro 128 Application Board
> Hallo miteinander
> Bin noch ein Greenhorn auf dem Gebiet und versuche mich mit einem kleinen Projekt .
> Verwende die C-Control Pro MEGA128 Application PCB + DCF-Antenne fĂĽr RTC + 4x16 LCD-Display +
> DS18S20 Temperatursensor  um eine Akku Ă?berwachung ( Ladung - Entladung ) mit Ah-erfassung sowie
> ein DSC-Interface von Conrad als Daten Logger umzusetzen.
> Verwende derzeit Die IDE 2.13.0.15 und kann , wenn ich mein Programm (Code in CC) ĂĽber RS232C an
> das Appl.PCB übertragen habe und mit dem Blitz-Buton starte, auch vernünftige Datensätze schreiben
> ohne Fehlermeldungen bei der Datenaufzeichnung zu bekommen.
> Des weiteren ist mir aufgefallen ( Programm läuft über 24 Stunden ( Tag und Nacht )
> wenn ich am nächsten Tag den PC anwerfe werden für einige Zeit Fehler produziert ( 20-50 Minuten
> lang e9)  und keine Datenaufzeichnung. Renkt sich aber dann wieder ein und die Folgedaten sind ok.  
> Starte ich ohne PC-Verbindung ( RS-Schnittstelle ) durch "PWR on" am Board so erhalte ich e9 !!
> Im Detail zuerst " schreibgeschĂĽtz und letzlich FR_INVALID_OBJECT --> e9 .
> Habe daraufhin die neue IDE 2.31.0.89 mal versucht .
> Dabei verhält sich mein Code deutlich anders PG3 --> LED geht an obwohl auf aus gesetzt.
> Kommt wohl aus den DCF-Routinen ; die LED wird da als Sekunden-Tick verwendet.
> Die fest an einem Poti eingestellte Spannung ( ein Teiler) der 5 Volt ( immer 5,01 Volt) liegt
> ohne Veränderung  ( gleicher ADC Eingang) um 0,35V höher -- kann ich nicht verstehen -- der vor
> dem Port befindliche 10k + C als Tiefpass ist unverändert . Wird bei der neuen IDE anders
> initialisiert ( interne Beschaltung ) ??? In meinem Code wird nichts veändert !!!!
> Das Phänomen Fehlermeldung bei neu übertragenem Code bleib bestehen . Die DCF Uhr tickt auch falsch
> wird nicht richtig ĂĽbernommen.
> Wer hat ähnliches zu berichten.
> Könnte mit der alten IDE leben wenn ich den RS-port nicht benutzen mu�.
> Bin fĂĽr jegliche Hilfe sehr dankbar .
> Danke und schöne Grüsse aus Oberschwaben
> Udo
>
Hallo an das Forum !!
Das ist noch keinen Antwort in dem Sinne, nur eine weitere Feststellung welche ich gemacht habe.
Ich hoffe jemand ??? kann mir das Problem erklären --- stehe wirklich auf dem Schlauch !!
folgender code läuft bei mir aus der IDE 2.13.0.15 mit dem Blitz Buton sauber ab und schreibt auf
Das LCD und auf die SDC einen DIR sowie mehrere files.
Entferne ich den RSStecker und Starte ĂĽber PCB PWR on dan erfolgt eine Anzeige am LCD aber keine
Daten oder oder files auf der SDC .

Was ist da anders ?????

hier der code:
/*******************************************************************************

 Project Name:      Write_File.cprj
 Required Libs's:   IntFunc_lib.cc
 Files:             Write_File.cc
 Writer:            CCPRO-TEAM modified by U.Bernard 2.12.2013
 Date:              02.09.2013
 Function:          1.Check capacity of the SDCard
                    2.Create a new folder and write a new file max 20 then
                    Access- LED is blinking or capacity <1 kB
                    3. write 2 lines Text into the file
                    and show in the Debugger-Window nr. of bytes written
                    Display Clock on LCD Display ( 4x16 char )
 ------------------------------------------------------------------------------
 MEGA Serie:
 Or C-Control PRO MEGA128 UNIT + Application PCB no USB !!!
 ------------------------------------------------------------------------------
  Note: ----- PB0 - PB6 and PE5 Jumper removed sonst Konflikt mit USB Atiny
  SDC-Access-LED on PBG  Port 52
   MEGA128 -> C-Control Pro SD-Card holder required!
  C-Control SD-Card Interface Conrad BN: 197220

*******************************************************************************/
// must be global declared
byte fat[562];
byte fil[32];
dword attrib[4];
dword size;
int FileNr;
char FileName[20];

byte minute, hour;                          // Global variables
byte day , mon , year;
byte sec, last_sec;


/*------------------------------------------------------------------------------
name:           programm_exit
input:          none
output:         none
description:    Endless loop with flashing accsess LED
------------------------------------------------------------------------------*/
void programm_exit(void)
{
    Port_DataDirBit(52,1);
    Port_WriteBit(52,0);

    // toggle LED on PG4 (accsess led)
    while(1)
    {
        Port_ToggleBit(52);
        AbsDelay(100);
    }

}
void Display_Time(void)
{
    char str[10];                       // Output String

    hour=Clock_GetVal(CLOCK_HOUR);
    minute=Clock_GetVal(CLOCK_MIN);
    Str_Printf(str, "%02d:%02d:%02d", hour, minute, sec);
    LCD_CursorPos(0);                   // Set LCD Cursor
    LCD_WriteText(str);

    day=Clock_GetVal(CLOCK_DAY);
    mon=Clock_GetVal(CLOCK_MON);
    year=Clock_GetVal(CLOCK_YEAR);
    Str_Printf(str, "%02d-%02d-%02d", day,mon,year);
    LCD_CursorPos(0xC0);                   // Set LCD Cursor 2te Zeile
    LCD_WriteText(str);
}


/*------------------------------------------------------------------------------
name:           main
input:          none
output:         none
description:    Main programm
------------------------------------------------------------------------------*/
void main(void)
{
//------------ Uhrzeit anzeigen auf LCD --------------------------------------
    LCD_Init();                             // Init Keyboard
    LCD_ClearLCD();                         // Clear Display
    LCD_CursorOff();                        // Turn Display Cursor off
//void Clock_SetTime(byte hour, byte min, byte sec, char corr);
       Clock_SetTime(00,00,00,80);             // Set date and start time

// void Clock_SetDate(byte day, byte mon, byte year);
        Clock_SetDate(04,11,13);
   // n=0;                                    // Var fĂĽr Zeichenposition
    last_sec=Clock_GetVal(CLOCK_SEC);

    byte res;                   // Fehler Byte siehe Error Handling
    char buf[100], text[100]; // Speicher fĂĽr Schreiben , Text-Speicher 101byte
    int i;
    int newfile;                    // Laufvariable fĂĽr zusätzliche Einträge
    word bytes_written[1];
    char free[20];
    Display_Time();
 for(newfile=0; newfile < 20 ; newfile++)
 {
    {
        sec=Clock_GetVal(CLOCK_SEC);
        if(sec!=last_sec) Display_Time();
        last_sec=sec;



    }
/**************************power on SD-Drive **********************************/
     power_on_sdcard();
/***************************  SD-Card reset  **********************************/
     reset_sdcard();
/****************************accsess led on  siehe SD-Drive *******************/
     accsess_led_on();
/**************************** SD-Card initialize  *****************************/
     SDC_Init(fat);
/**********************storage capacity of the SD-Card , <1K Programm exit*****/
     size=get_free_sdcard("0:/");
// storage capacity is to low (< 1kByte), exit programm
    Str_Printf(free,"bytesfree: %ldrn",size);
    Msg_WriteText(free);
     if(size<1)
     {
        programm_exit();
     }
/******************* create new directorie  ***********************************/
     SDC_MkDir("0:/CC-PRO");
/***************** open or create file to write *******************************/

     while(1)
     {
       FileNr++;
       Str_Printf(FileName,"0:/CC-PRO/log%d.txt",FileNr);

       // exist file? No then creat new file
       res=SDC_FOpen(fil, FileName, FA_READ|FA_WRITE|FA_OPEN_EXISTING);
       if(res!=0)
       {
          SDC_FOpen(fil, FileName, FA_WRITE|FA_CREATE_ALWAYS);
          break;
       }

       // maximum file nummbers is 20
       if(FileNr>20)programm_exit();
     }



/*********************** write string to file  ********************************/

     buf= "Hello World. C-Control Pro now with SD-Card routines!rn";
    SDC_FWrite(fil, buf, Str_Len(buf), bytes_written);

     Str_Printf(text, "bytes written:%dr", bytes_written[0]);
     Msg_WriteText(text);

     // write buffer to SD-Card
     SDC_FSync(fil);

/*************************** close file  ************************************/
     SDC_FClose(fil);

/************************ append strings to file  ****************************/

     res=SDC_FStat(FileName, attrib);
     size=attrib[0];
     SDC_FOpen(fil, FileName, FA_READ|FA_WRITE|FA_OPEN_EXISTING);
     SDC_FSeek(fil, size);

     Str_Printf(buf,"Now we have a second string ,In the new File %d rn",(newfile+1));
     SDC_FWrite(fil, buf, Str_Len(buf), bytes_written);
     SDC_FWrite(fil, free, Str_Len(free), bytes_written);
     Str_Printf(text, "bytes written:%dr", bytes_written[0]);
     Msg_WriteText(text);
     // write buffer to SD-Card
     SDC_FSync(fil);

/************************** close file  **************************************/
     SDC_FClose(fil);


/*************************** accsess led off  ********************************/
     accsess_led_off();


/***************************** power off  ************************************/
     power_off_sdcard();
//----------------------------- Warte Zeit 1 Minute --------------------------
    AbsDelay(60000);
  }
}

Kann das jemand bestätigen oder mache ich da etwas granatenmässig falsch ???

Help Help Help oder beser SOS
MfG
Udo


    Antwort schreiben


Antworten:

Re: Fehler beim Schreiben auf SDC & Autostart (von UFABRD - 16.01.2014 15:43)
    Re: Fehler beim Schreiben auf SDC & Autostart (von Max - 16.01.2014 17:34)