www.blafusel.de


  Home  |   Privat  |   Impressum  |   Bücher  |   Computer  |   Misc  |   OBD  |   Forum
Aktuelle Zeit: Mittwoch 12. August 2020, 00:54

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: sd-karte.c
BeitragVerfasst: Freitag 17. Juli 2015, 21:00 
Offline

Registriert: Freitag 17. Juli 2015, 20:38
Beiträge: 2
Hallo ich bin am verzweifeln. Wer kann mir helfen?
Ich habe versucht den Beispiel Quellcode sd-karte.c mit dem AtmelStudio kompilieren.
Zum linken und brennen kommt es nicht. AtmelStudio bricht mit vielen undefined reference to ....Fehlermeldungen ab.zb.
Error 28 ld returned 1 exit status collect2.exe 0 0 GccApplication8
Error 5 undefined reference to `fat_loadFatData' C:\Users\mb_win 7\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug/.././GccApplication8.c 120 1 GccApplication8

Error 26 undefined reference to `uputc' C:\Users\mb_win 7\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug/.././GccApplication8.c 146 1 GccApplication8
Error 2 undefined reference to `uputs' C:\Users\mb_win 7\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug/.././GccApplication8.c 110 1 GccApplication8
Error 19 undefined reference to `ffclose' C:\Users\mb_win 7\Documents\Atmel Studio\6.2\GccApplication8\GccApplication8\Debug/.././GccApplication8.c 137 1 GccApplication8
...... ......
und noch einige mehr undefined reference to Fehlermeldungen andere Fehlermeldungen außer undefined reference to.... erscheinen nicht.

wer kann mir helfen? Liegt es daran das der Compiler einen Zugriff auf der SD Karte sucht und nicht darauf zugreifen kann?
vielen Dank
Holger


Code:
/**
 *   Greift auf eine SD Karte per SPI zu
 *
 *    Doku, siehe http://www.mikrocontroller.net/articles/AVR_FAT32
 *  Neuste Version: http://www.mikrocontroller.net/svnbrowser/avr-fat32/
 *   Autor: Daniel R.
 *
 *   Modifikationen: Florian Schäffer, www.blafusel.de, 23.6.2014
 *
 */

# define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>      // definiert _delay_ms()


#include <avr/interrupt.h>
#include <stdio.h>
#include <mmc_config.h>   // Hier werden alle noetigen Konfigurationen vorgenommen, umbedingt anschauen !
#include <file.h>
#include <fat.h>
#include <mmc.h>      // Hardware abhaengig
#include <uart.h>      // Hardware abhaengig, es kann auch eine eigene eingebunden werden !


// prototypen von funktionen in dieser datei
static void timer0_init(void);
int main(void);

// timer0 einstellungen, werte mit http://www.avrcalc.com/download.html berechnet!
// aus diesen 3 werten ergibt sich die tick zeit, hier 10ms.
// 4 = prescaler 256, 3 = prescaler 64, 5 = prescaler 1024, 2 = prescaler 8. wenn prescaler 0 = prescaler dann stoppt der timer
#if(F_CPU == 4000000)         // error 0.16%
   #define TOP_OCR 0x9B
   #define START_TCNT 0x64
   #define PRESCALER 0x04
#endif

#if(F_CPU == 8000000)         // error 0,16%
   #define TOP_OCR 0x4D
   #define START_TCNT 0xB2
   #define PRESCALER 0x05
#endif

#if(F_CPU == 10000000)         // error 0.351%
   #define TOP_OCR 0x61
   #define START_TCNT 0x9E
   #define PRESCALER 0x05
#endif

#if(F_CPU == 12000000)         // error 0.16%
   #define TOP_OCR 0x74
   #define START_TCNT 0x8B
   #define PRESCALER 0x05
#endif

#if(F_CPU == 16000000)         // error 0,16%
   #define TOP_OCR 0x9B
   #define START_TCNT 0x64
   #define PRESCALER 0x05
#endif

#if(F_CPU == 20000000)         // error 0.16%
   #define TOP_OCR 0x4D
   #define START_TCNT 0xB2
   #define PRESCALER 0x04
#endif

// timer0 variable
volatile uint8_t    TimingDelay;   // fuer mmc.c


ISR (TIMER0_COMP_vect)
{
   TimingDelay = (TimingDelay==0) ? 0 : TimingDelay-1;
}


static void timer0_init()
{
   // timer0 config 
   // initialisierung, auf jeden fall vor mmc_init(),
   // denn da wird der timer benoetigt!

   TimingDelay = 0;      // initialisierung der zaehl variable   

   TCCR0 = 1<<WGM01;       // timer0 im ctc mode
   TIMSK = 1<<OCIE0;      // compare interrupt an

   TCNT0 = START_TCNT;      // ab wo hochgezaehlt wird,
   OCR0 = TOP_OCR;         // maximum bis wo gezaehlt wird bevor compare match   

   TCCR0 = PRESCALER;      // wenn prescaler gesetzt wird, lauft timer los
   sei();               // interrupts anschalten, wegen compare match
}



// *****************************************************************************************************************
int main(void)
{
   uint8_t file_name [] = "test.txt";
   char str [20];
   uint32_t seek;

   timer0_init();      // Timer initialisieren bevor FAT Library genutzt wird
   uinit();         // uart config

   uputs((uint8_t*)"Start");

   // sd/mmc config 
   if( FALSE == mmc_init() )
   {
      uputs((uint8_t*)" -> Fehler Init. Ende\n");
      return -1;
   }

   // fat config
   if( FALSE == fat_loadFatData() )
   {
      uputs((uint8_t*)" -> Fehler loadFatData. Ende\n");
      return -1;
   }

   uputs((uint8_t*)" OK\n");

   // ********************** Datei schreiben **********************
   if( MMC_FILE_OPENED == ffopen(file_name,'r') )      // Oeffne existierende Datei zum anhaengen von Daten. Wenn geklappt
      ffseek(file.length);                     // Gehe ans Ende der Datei
   else                                     
      ffopen(file_name,'c');                     // Lege Datei neu an

   ffwrites ((uint8_t*)"Hello world.");         
   sprintf (str, " File Size: %ld Bytes\r\n", file.length);   // DOS Zeilenumbruch
   ffwrites ((uint8_t*)str);
   ffclose();

   // ********************** Datei lesen **********************

   if( MMC_FILE_OPENED == ffopen(file_name,'r') )      // Datei zum lesen oeffnen
   {         
      seek = file.length;                        // Dateigroesse
      do                                    // Lese Byte ein
      {
         uputc( ffread() );                  
      } while(--seek);                        // bis alle Bytes der Datei eingelesen wurden
      ffclose();
   }
   
   return 0;
}


Nach oben
 Profil Private Nachricht senden  
 
 Betreff des Beitrags: Re: sd-karte.c
BeitragVerfasst: Freitag 17. Juli 2015, 22:45 
Offline

Registriert: Freitag 17. Juli 2015, 20:38
Beiträge: 2
Das Problem ist gelöst. Ich hatte vergessen alle *.c Dateien aus dem Beispiel im AVR Studio
zum Projekt hinzufügen und nicht nur die eine, da haben die Funktionen gefehlt. :shock:
Holger :les:


Nach oben
 Profil Private Nachricht senden  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de