mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI Funktion für XMega128A1 in Codevision


Autor: Venga Ahnungslos (venga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe mir vor kurzem die neue Version des CodeVisionAVR Evaluation 
V2.04.5b heruntergeladen, da das Programm jetzt auch die ATxMeaga-Reihe 
unterstützen soll.

Um eine schnellere Konfiguration der Register zu erlangen habe ich den 
CodeWizard aufgerufen. Allerdings suche ich dort vergebens die 
Konfiguration der SPI-Module. Nur unter der USART-Schnittstelle habe ich 
einen Master SPI-Modus gefunden. Dies ist aber doch nicht das 
eignetliche SPI-Modul sondern nur eine, über das USART-Modul, simulierte 
SPI-Schnittstelle oder verstehe ich hier etwas falsch?

Wenn sich jemand von euch mit CodeWizard und dem SPI der Xmega-Reihe 
auskennt währe es sehr Nett wenn mir jemand erklären könnte wie man das 
richtige SPI-Modul aktiviert und was eigentlich der Master-SPI-Modus 
ist.

Schon mal vielen Danke!!!

Autor: GG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kein Wisard der Welt kann Dir bei der Funkton der SPI-Schnittstelle 
helfen.
Der stellt Dir höchstens die Grund-Configuration zur Verfügung.
Der Umstieg auf XMEGAS ist gar nicht so schwierig- Grundbedingung:
Du solltest einigermaßen fit im Umgang mit herkömmlichen AVR's sein.
SPI,TWI USART sollte kein Problem sein.
Die beste Lösung ist die ATMEL Seite  "Application Example and 
Algorithms".
(AVR1309 SPI Schnittstelle für XMEGAS).
Link: http://www.atmel.com/dyn/products/app_notes_mcu.as...

Gruß GG

Autor: Dominik M. (lauso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Code Vision gibt es zumindest eine Funktion mit der man die Daten 
auf den Bus gibt. Also SPI.h reinladen und Du kannst zumindest diese 
Funktion verwenden.
Ich habe mich damit auch etwas schwergetan. Der Fehler lag bei mir das 
ich die Ausgänge falsch Konfiguriert habe. Mit dem Scope konnte man das 
dann aber gut erkennen.
void SPI_Write(unsigned char addr,unsigned char data)
{
 unsigned char mcpzw=0;
  // Activate the CS pin
  PORTD.OUT = Bit_Reset(PORTD.OUT,4);
  delay_us(1);
  // Start MCP23S17 OpCode transmission 
 mcpzw = SPI_SLAVE_ID | ((SPI_SLAVE_ADDR << 1) & 0x0E)| SPI_SLAVE_WRITE;
  spi(mcpzw);
  // Start MCP23S17 Register Address transmission
  spi(addr);                      // Wait for transmission complete
  // Start Data transmission
  spi(data);  
  PORTD.OUT = Bit_Set(PORTD.OUT,4);
}

unsigned char SPI_Read(unsigned char addr)
{
 unsigned char mcpzw=0,rd_data=0;
  // Activate the CS pin
  PORTD.OUT = Bit_Reset(PORTD.OUT,4);
  delay_us(1);
  // Start MCP23S17 OpCode transmission 
 mcpzw = SPI_SLAVE_ID | ((SPI_SLAVE_ADDR << 1) & 0x0E)| SPI_SLAVE_READ;
  spi(mcpzw);
  // Start MCP23S17 Register Address transmission 
  delay_us(100);
  rd_data=spi(addr);                      // Wait for transmission complete
  delay_us(100);
  rd_data=spi(0x00);
  PORTD.OUT = Bit_Set(PORTD.OUT,4);
  return rd_data;
}
Hier sind meine zwei Funktionen mit dem ich den Bus anspreche.
CS muß natürlich durch Deinen Code erzeugen.

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.