-         

Ergebnis 1 bis 4 von 4

Thema: ATmega32 und DataFlash - keine Kommunikation möglich

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    37

    ATmega32 und DataFlash - keine Kommunikation möglich

    Anzeige

    Guten Abend,

    ich bin gerade dabei, meinen Atmega32 mit dem Atmel Dataflash AT45DB321D (Datenblatt) zu verbinden, um auf eine größere Sinus-Tabelle zugreifen zu können.
    Den Code habe ich von dieser Seite übernommen.
    Allerdings ist der Source nicht mit meinem Atmega32 pinkompatibel, deswegen habe ich hier die Zeilen 76 und 77 angepasst und hier die Zeilen 93-95 entsprechend abgeändert.

    Hier meine Verkabelung (Flash - µC):
    Code:
    SI - MOSI (PB5)
    SCK - SCK (PB7)
    RESET - VCC
    CS - SS (PB4)
    SO  - MISO (PB6)
    GND - GND
    VCC - VCC
    WP - VCC
    Natürlich ist VCC (sowie Reset und WP) nicht direkt mit den 5 Volt verbunden, sondern indirekt über 2 Leuchtdioden. So kommen nur ca. 3,5V am Flash an.

    Leider klappt die Verbindung nicht.
    Ich habe zwar mit einem Oszilloskop ausmessen können, dass SCK und MOSI ordnungsgemäß funktionieren.
    Allerdings antwortet der Flash nicht; MISO ist stets auf GND.
    Somit bin ich nicht einmal in der Lage, die ID bzw. den Status auszulesen.
    Es fließt ungefähr ein Strom von ~1mA über VCC und die LEDs zum Flash.

    Für jede Hilfe bin ich dankbar, mit meinem Latein bin ich nach mehrtägiger Fehlersuche am Ende.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    37
    Also ich habe heute einen anderen Flash ausprobiert, wieder keine Antwort von ihm.
    Der Flash kann also nicht kaputt sein.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    37
    Die LEDs wurden durch einen 3.3V-Schaltregler ersetzt, als Output krieg ich allerdings nur durchgehend high.
    Irgendwelche weiteren Ideen?
    Vielleicht sind die Ports oder internen Pull-Ups falsch?
    Im Moment sind sie so eingestellt:

    Code:
    PORTB |= (1<<PB4) | (1<<PB5) | (1<<PB6) | (1<<PB7); 
    DDRB |= (1<<DDB5) | (1<<DDB7) | (1<<DDB4);
    DDRB &= ~(1<<DDB6);
    
    SPSR = (1<<SPI2X);
    SPCR = (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL);
    Für weitere Hilfe wäre ich sehr dankbar!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    20.01.2008
    Beiträge
    37
    Das Problem wurde gelöst.
    Für alle, die einmal das selbe Problem haben:
    Hardware-SPI auf Level 0 setzen, das geht durch folgende Zeilen
    Code:
    SPSR = (1<<SPI2X);
    SPCR = (1<<SPE) | (1<<MSTR) | (0<<CPHA) | (0<<CPOL);

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •