mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 MMC init


Autor: Sascha P. (poggie)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jungs,
ich muss eine SD Karte mit nem PIC24FJ64Gb004 ansprechen und nen paar 
Daten darauf spreichern..also quasi als Datenlogger.
Ich verwende den C30 Compiler und habe mir eclipse so eingerichtet das 
er mir das hex file erzeugt.
Da die Hardware noch nicht da ist, simmuliere ich zur Zeit noch in 
Proteus.
Dazu habe ich das MMC Model genommen und da es dort den GB004 nicht gibt 
den GA004. Sollte aber von der Funktion mit der Karte das gleiche sein.


Soweit so gut.
Problem ist nur Ich habe keine Ahnung ;)

Vielleicht könnt ihr mir ja weiter helfen.
Mit dem Oszilloskop sehe ich jetzt die änderungen der Tacktleitung und 
DO
Habe eine leere datei als mmc file gespeichert darin würde ich nun gerne 
meine Daten sehen.
Wie würdet ihr vorgehen? Macht das alles Sinn so oder bin ich da aufm 
Holzweg?

Grüße
Sascha
/*
 * my_spi.c
 *
 *  Created on: 13.05.2010
 *      Author: Sascha
 */
#include "my_spi.h"
#include "PIC24F_periph_features.h"

char SPIsend(char d) // Über SPI-Schnittstelle senden
{ 
  SPI1BUF = d;
  while (!SPI1STATbits.SPIRBF)
    ;
  return SPI1BUF;

}


void init_spi(void) {

  int i =  0 ;

  //from Datasheet pic24fj
  /*  To set up the SPI module for the Standard Master mode
   of operation:
   1. If using interrupts:
   a) Clear the SPIxIF bit in the respective IFSx
   register.
   b) Set the SPIxIE bit in the respective IECx
   register.
   c) Write the SPIxIP bits in the respective IPCx
   register to set the interrupt priority.
   2. Write the desired settings to the SPIxCON
   register with MSTEN (SPIxCON1<5>) = 1.
   3. Clear the SPIROV bit (SPIxSTAT<6>).
   4. Enable SPI operation by setting the SPIEN bit
   (SPIxSTAT<15>).
   5. Write the data to be transmitted to the SPIxBUF
   register. Transmission (and reception) will start
   as soon as data is written to the SPIxBUF
   register.


   */
  //Set Data Direction in TrisC

  TRISCbits.TRISC7 = 0;
  TRISCbits.TRISC8 = 1;
  TRISCbits.TRISC9 = 0;

  //Initialize the SPI
  RPINR20bits.SDI1R = 24; //SDI at RP24  Input RC8

  RPOR11bits.RP23R = 7;//SDO  at RP23 output RC7
  RPOR12bits.RP25R = 8; //SCK at RP25  output RC9


//Init SPI 
  SPI1CON1bits.CKE = 1;
  SPI1CON1bits.MSTEN = 1; // Master
  SPI1CON1bits.SPRE = 0; // Divide by 8
  SPI1CON1bits.PPRE = 0; // Divide by 64
  SPI1CON2 = 0x0000;
  SPI1STATbits.SPIEN = 1;//enable SPI

  //warten
  spiDelay(10000);
  //74+ Takte an Karte
  for (i = 0; i <= 74; i++) {

    SPIsend(0xFF);
  }
  SPIsend(0x40);
  SPIsend(0x00);
  SPIsend(0x00);
  SPIsend(0x00);
  SPIsend(0x95);

  //nochmal nen paar Takte senden
  for (i = 0; i <= 74; i++) {

      SPIsend(0xFF);
    }
}

void spiDelay(int wait) {
  int i = 0;
  for (i = 0; i < wait; ++i) {

  }

}

Autor: Sascha P. (poggie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
push

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.