- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 11

Thema: spi mit avr

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2011
    Beiträge
    12

    spi mit avr

    Hallo,

    wenn ein Byte in das Register SPDR geschrieben wird, dann beginnt automatisch die Übertragung an den Slave. Der SHIFT-Takt wird vom AVR selber generiert.

    MEGA8

    Meine Frage:

    Code:
    void spi_shift(uint8_t data1)
    {
            SPDR = data1;		        //=== Start transmission
    	
    	while(!(SPSR & (1<<SPIF))); // warten, bis Übertragung zu Ende ist
    
            PORTB=1<<PB2;                 // Store
    }
    Generiert der AVR den /SS PIN ebenfalls eigenständig? Auf dem Oszilloskope kann ich kein LOW am PIN /SS sehen.

    In meinem Programm, welches funktioniert, ist der PIN /SS nicht auf LOW gesetzt, sondern hat permanent HIGH-Pegel laut Oszilloskop.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von 11udo11 Beitrag anzeigen
    Generiert der AVR den /SS PIN ebenfalls eigenständig?
    Nein. Das macht auch relativ wenig Sinn, da am AVR ja mehrere verschiedene Slaves angeschlossen sein können. Du musst die entsprechende Leitung schon selbst ansteuern. Wenn du ihn als Ausgang benutzt, ist das in Ordnung, aber wenn du ihn als Eingang benutzt und das Eingangssignal Low ist, bricht die SPI-Übertragung ab (Bus-Kollision!)

    Grüße,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2011
    Beiträge
    12
    Danke Markus für Deine Antwort.

    Aber es bleibt dennoch eine Unklarheit im Raum:

    Ich habe nirgendwo den /SS auf LOW gesetzt. Warum funktioniert mein Programm? Alle Werte, die ich vom MEGA8 auf die beiden 74HCT595 schicke, werden bitgenau angezeigt. Immer!

    Jemand muss doch den /SS auf LOW setzen, damit der 74HCT595 die Ausgänge freigeben, oder?

    Hier mein kleiners Testprogramm, OHNE LOW für /SS!!

    Code:
    // SPI mit 74HCT595 2 Bytes  an 2 ICs 74HCT595
    
    #define F_CPU  12000000UL
    #include <stdio.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    volatile uint8_t data1=3, data2=3, count;
    
    
    //############################################################################
    void spi_shift(uint8_t data1, uint8_t data2)
    {
    	
    	SPDR = data1;		//=== Start transmission
    	
    	while(!(SPSR & (1<<SPIF))); // warten, bis Übertragung zuende ist
    	
    	SPDR=data2;
    	
    	while(!(SPSR & (1<<SPIF))); // warten, bis Übertragung zuende ist
    	
    	PORTB=1<<PB2;// Store
    	
    	
    }
    //############################################################################
    
    void HC595Init()
    {
    DDRB = (1<<DDB2)|(1<<DDB3)|(1<<DDB5);   // DDB2 ist SS DDB3 ist MOSI, DDB5 ist SCK
    		
    SPCR |= (1<<SPE) | (1<<MSTR) | (1<<CPHA) | (1<<CPOL) | (1<<SPR0);// enable | master | CPHA | 1/16clk
    
    }
    //############################################################################
    
    int main(void)
    {
    	HC595Init();
    	while(1)
    	{
    		spi_shift(data1,data2);
    	}
    }

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von 11udo11 Beitrag anzeigen
    Jemand muss doch den /SS auf LOW setzen, damit der 74HCT595 die Ausgänge freigeben, oder?
    Ein 595 hat keinen Pin mit Namen /SS

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2011
    Beiträge
    12
    Natürlich ist der PIN am Mega8 gemeint, der mit dem RLCK (12) verbunden ist!

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Was zeigt denn das Scope an Pin 12 vom 595?

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. avr jtagice mkii debugwire -> spi
    Von drew im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 09.11.2008, 12:24
  2. SPI Kommunikation zwischen 2 AVR's
    Von Ruppi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 05.07.2007, 09:34
  3. AVR Programmierung SPI
    Von CodeX im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 06.05.2007, 07:09
  4. Flash mit SPI auslesen und programmieren direkt od. über AVR
    Von Shadowrun im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 01.07.2006, 11:31
  5. daten mit spi von avr zu avr übertragen
    Von pebisoft im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 21.10.2005, 14:49

Berechtigungen

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

LiFePO4 Speicher Test