Gast
#486718
Hallo, seit kurzem beschäftige ich mich mit der ARM7 Plattform. Arbeite mit dem GCC, mit dem hab ich mich seit dem AVR schon angefreundet. Der ARM7 ist ein AT91SAM7S64 auf dem Olimex Entwicklungsboard. Leider ist die Initalisierung der Onchipfunktionalitäten etwas komplizierter als beim guten alten AVR. Genauer gesagt, geht es um die SPI in diesem Falle. Habe mir schon im das Dataheet des Controlleres und die Appnote von Atmel dazu durchgelesen, bekomme aber weder ein Clock noch ein MOSI auf die entsprechenden Pins. Zum Initalisieren verwende ich die (glücklicherweise) von Atmel bereitgestellten Routinen für den IAR-Compiler. (AT91SAM7S64.h und lib_AT91SAM7S64.h) mein main sieht folgendermaßen aus: (für genauers siehe Anhang) int main(void) {//* Begin int i; AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ; AT91F_PIO_Enable(AT91C_BASE_PIOA, LED); AT91F_PIO_OutputEnable(AT91C_BASE_PIOA, LED); AT91F_SPI_CfgPIO(); AT91F_SPI_CfgPMC(); AT91F_SPI_Enable( AT91C_BASE_SPI ); AT91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | /* we use MASTER only mode */ AT91C_SPI_PS_FIXED | /* we only use Fixed Peripheral Select */ AT91C_SPI_MODFDIS | /* no Fault protection since there is no second master */ AT91C_SPI_PCS | /* no peripheral selected */ ((10<<24) & AT91C_SPI_DLYBCS); /* 10 Clock Cycles betwenn two different chip selects */ AT91C_BASE_SPI->SPI_CSR[0] = (48<<15); AT91C_BASE_SPI->SPI_CSR[1] = (48<<15); AT91C_BASE_SPI->SPI_CSR[2] = (48<<15); AT91C_BASE_SPI->SPI_CSR[3] = (48<<15); while(1) // Loop forever { AT91F_PIO_SetOutput(AT91C_BASE_PIOA, LED); AT91F_SPI_PutChar(AT91C_BASE_SPI,0xFA,0); wait(); AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, LED); wait(); } }//* End Wie gesagt, die entsprechende Signal werden nicht generiert, weiß jemand was ich in der Sache vielleicht übersehen habe? Eine andere Frage gleich noch zu der Thematik, zu der ich noch nichts gefunden habe. Bei Konfiguration der SPI werden ja die entsprechenden Pins auch auf Ausgang oder Eingang gesetzt? Oder sind sie noch über das PIO_OER Register "freizuschalten" ? Danke im Vorraus Martin