www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Cortex M3 Luminary SSI Interrupt Problem


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen LM3S9B92 von Luminary und versuche die SSI Schnittstelle 
für einen IC welcher über SPI angesprochen wird anusprechen.

Anhand von Beispielprogrammen (Blinky, UART) habe ich versucht die SSI 
Schnittstelle zu aktivieren.

Jedoch habe ich ein Problemm mit der Funktion 
SSIConfigSetExpClk(SSI0_BASE,...).
Sbald ich diese Funkiton einbinde, spring mir das Programm während des 
Debuggen in die startup_ccs.c in die folgende Interruptroutine und 
bleibt dort hängen.
//********************************************************************** 
*
// This is the code that gets called when the processor receives a fault
// interrupt.  This simply enters an infinite loop, preserving the 
system state for examination by a debugger.
//********************************************************************** 
*
static void
FaultISR(void)
{
    //
    // Enter an infinite loop.
    //
    while(1)
    {
    }
}

Durch viel probieren und alles außer dieser Funktion auskommentieren, 
bin ich mir sicher das die SSI0_BASE das Problem darstellt, nur weiss 
ich nicht wieso schliesslich ist die SSI0_BASE als 0x40008000 definiert.

Danke im voraus.

Gruß
Peter

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peripherie mit Takt versorgt?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert,

das Developmentboard funktioniert, habe die Beispielprogramme getestet 
und mnimal verändert. Der IC den ich über SSI ansteuern möchte ist 
angeschlossen. Jedoch ist auf den SPI Leitungen kein Takt/Signal.

Gruß
Peter

Autor: Andreas Watterott (andreasw) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn dein kompletter Code aus?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,
hier ist mein kompletter Code.

#include "inc/lm3s9b92.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"
#include "utils/uartstdio.h"
//SPI-Bibliothek
#include "driverlib/ssi.h"


#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif


//Define ulProtocol data transfer protocol
#define SSI_FRF_MOTO_MODE_0     0x00000000  // Moto fmt, polarity 
0,phase 0
#define SSI_FRF_MOTO_MODE_1     0x00000002  // Moto fmt, polarity 
0,phase 1
#define SSI_FRF_MOTO_MODE_2     0x00000001  // Moto fmt, polarity 
1,phase 0
#define SSI_FRF_MOTO_MODE_3     0x00000003  // Moto fmt, polarity 
1,phase 1
#define SSI_FRF_TI              0x00000010  // TI frame format
#define SSI_FRF_NMW             0x00000020  // National MicroWire frame

#define SSI_ulBitRate        2000000
#define SSI_ulDataWidth    8

#define SSI_CS                  GPIO_PIN_3
#define SSI_CLK                 GPIO_PIN_2
#define SSI_TX                  GPIO_PIN_5
#define SSI_RX                  GPIO_PIN_4




int
main(void)
{
    // Set the clocking to run directly from the crystal.
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | 
SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_16MHZ);



    // GPIO-Port_A aktivieren
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    // SSI0 aktiviren
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);

    //SSI_RX als Input
    GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_4);

    //SSI_TX und SSI_CLK als Output
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_5);


    //SSI_RX, SSI_TX, SSI_CLK an SSI übergeben
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_4 | 
GPIO_PIN_5);

    // Configure the SSI.
    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_NMW , 
SSI_MODE_MASTER, SSI_ulBitRate, SSI_ulDataWidth);

    // Enable the SSI module.
    SSIEnable(SSI0_BASE);


    while(1)
    {


    }

}

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

Der Quelltext sieht okay aus.
Den Startup-Code + Linkerscript benutzt du von den Beispielen und ist 
der richtige Controller eingestellt?

Gruß
Andreas

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.