SD-Karte Atmega644 Probleme

Hallo,

ich benötige dringend Hilfe!
Ich versuche seit Tagen einen SD-Datenrekorder zum laufen zu bringen.

Ich habe dazu schon die AVR FAT32 Lib und die von Roland Riegel
probiert.

Am Anfang gingen beide aber nach kurzem herumprobieren beider Libaries
ging gar nichts mehr

SD-Karten habe ich 3 verschieden versucht, MEDION 1GB, SanDisk 128MB,
SanDisk 1GB. Am Anfang gingen alle 3 SD Karte.

Auch mit verschiedenen uC(Atmega644 an 14,7456MHZ) habe ich es dann
nochmal getestet, immer das gleiche.

Ich bekomme einfach keine Antwort von der SD Karte (MISO Pegel ist immer
High)

Als Pegelwandler 5V3V habe ich den SD-Conector von Display3000 und das
SD-Card Interface von Conrad probiert.

Ich verstehe nicht wieso der MISO Pegel immer High ist.

Mein Programm sieht folgendermaßen aus:

#include

#include „mmc_config.h“ // Hier werden alle noetigen Konfigurationen
vorgenommen, umbedingt anschauen !
#include „file.h“
#include „fat.h“
#include „mmc.h“ // Hardware abhaengig

// prototypen von funktionen in dieser datei
static void timer0_init(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

#define TOP_OCR 0x8F
#define START_TCNT 0x70
#define PRESCALER 0x05

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

//
************************************************************************
*****************************************
ISR (TIMER0_COMPA_vect)
{
TimingDelay = (TimingDelay==0) ? 0 : TimingDelay-1;
}

//
************************************************************************
*****************************************
static void timer0_init(){

TimingDelay = 0; // initialisierung der zaehl variable

TCCR0A = 1

Ähm da gab es auch mal einen AVR mit einem Kompatibilitätsmodus, für einen anderen der Standardmäßig an ist… (FUSE setting) … das könnte der 644 gewesen sein. Das hatte ich mal, bin schier wahnsinnig geworden deswegen.

Programmierung mit einfachem geht 1a, aber wenn man dann mehr macht,spinnt alles rum. (also z.B. sobald man Funktionen verwendet) :wink:

Wie setzt du die DDR Register?

(Input/Output)
Sind die Korrekt?
Wenn zufällig der MISO Pin am AVR als Output gesetzt ist dann könnte das auch dazu führen.

Die Clock kommt an der SD Karte an?

Gruß

Christian

#define configure_pin_mosi() DDRB |= (1

Hallo Benjamin,
wie sieht die Schaltung dazu aus?
Hast du die SPI Schnittstelle des Atmel richtig initialisiert?
Was heißt die Karten liefen erst?

Michael

Hmmm,

Betriebsspannung / Signalpegel korrekt? (2.9 - 3.6V)

Was genau für eine Karte ist es?
SDHC oder nur SD?
Weil bei SDHC o.ä. gibts ein Kompatibilitätsproblem
es sollte soweit ich weiß nur eine SD sein…
Um eine SDHC in den SPI Modus zu versetzen bedarf es soweit ich
weiß einer speziellen Vorgehensweise, meine ich gelesen zu haben. Und das Protokol ist auch anderst.

Ist die Pinbelegung korrekt?
Kommt der Chipselect (SS) an?
http://www.ulrichradig.de/home/index.php/avr/mmc-sd

Ansonsten fällt mir jetzt auf die schnelle nichts mehr ein.

Gruß

Christian