sloti
05.04.2011, 13:31
Moin,
ich habe inzwischen ein neues Problem mit meinem Board von IAR. Ich hab inzwischen damit angefangen alle Initialisierungen usw. (mehr oder weniger) selbst zu schreiben. Habs teilweise nur so geändert wie ich es brauche. Nun habe ich aber das Problemm, dass der Controller immer abstürzt wenn ich eine Funktion ausführe die ich vor der Main funktion deklariere. Hier einmal mein Code
#include "iolpc1766.h"
#include "intrinsics.h"
void i2c_init(void)
{
PCONP=(1<<7); // Enable Power
PCLKSEL0=(0<<14)|(1<<15); //PCLK = CCLK/2=50MHz
PINSEL1=(1<<22)|(1<<24); //I2C Pinfunktion auswählen
SETENA0=(1<<10); //I2C interrupt aktivieren
}
void i2c_start (void)
{
I2C0CONSET_bit.I2EN=1;
}
void test (void)
{
for(unsigned int a=0;a>15;a++);
}
void clock_init (void)
{
//PLL Interrupt aktivieren
SCS_bit.OSCEN=0;
PLL0CON_bit.PLLC = 0; //PLL abkoppeln
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
PLL0CON_bit.PLLE = 0; //PLL ausschalten
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
CLKSRCSEL &= ~(1<<0)|(1<<1); // internen Oszillator auswählen
PLL0CFG_bit.MSEL = 75-1; //M=75,N=2
PLL0CFG_bit.NSEL = 2-1;
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
PLL0CON_bit.PLLE = 1; //PLL wieder einschalten
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
while(!PLL0STAT_bit.PLOCK); //warten bis PLL fertig ist
CCLKCFG = 3-1; //CCLK= Fcco/3
PLL0CON_bit.PLLC = 1; // PLL ankoppeln
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
}
void clock_output_init(void) //stellt den Takt für die Kamera auf P1.27 bereit
{
CLKOUTCFG_bit.CLKOUT_EN =0;
CLKOUTCFG &= ~(1<<0)|(1<<1)|(1<<2)|(1<<3); //CCLK auswählen
CLKOUTCFG = (1<<4)|(1<<5)|(1<<6); //duch 8 teilen 100/8=12,5
CLKOUTCFG_bit.CLKOUT_EN=1;
}
int main()
{
FLASHCFG=(1<<12)|(1<<14);
SETENA0=(1<<16);
test();
while(1)
{
}
}
Wenn ich den Inhalt der Funktionen einfach so in die Main kopiere klappts. Nur wenn ich die funktionen aufrufe, wie in meinem code gerade die test() funktion. Stürzt er ab und macht gar nichts mehr. Zudem gibt er mir immer folgendes aus : "Tue Apr 05 13:29:35 2011: The stack 'CSTACK' is filled to 100% (1024 bytes used out of 1024). The warning threshold is set to 90.% ". Mit der Meldung kann ich auch nur sehr wenig anfangen. Kann mir da jemand weiterhelfen? Wobei die Warunung nicht unbedingt im zusammenhang mit meinem Problem steht, da sie immer auftaucht sobald ich das programme downloade.
mfg
Erik
ich habe inzwischen ein neues Problem mit meinem Board von IAR. Ich hab inzwischen damit angefangen alle Initialisierungen usw. (mehr oder weniger) selbst zu schreiben. Habs teilweise nur so geändert wie ich es brauche. Nun habe ich aber das Problemm, dass der Controller immer abstürzt wenn ich eine Funktion ausführe die ich vor der Main funktion deklariere. Hier einmal mein Code
#include "iolpc1766.h"
#include "intrinsics.h"
void i2c_init(void)
{
PCONP=(1<<7); // Enable Power
PCLKSEL0=(0<<14)|(1<<15); //PCLK = CCLK/2=50MHz
PINSEL1=(1<<22)|(1<<24); //I2C Pinfunktion auswählen
SETENA0=(1<<10); //I2C interrupt aktivieren
}
void i2c_start (void)
{
I2C0CONSET_bit.I2EN=1;
}
void test (void)
{
for(unsigned int a=0;a>15;a++);
}
void clock_init (void)
{
//PLL Interrupt aktivieren
SCS_bit.OSCEN=0;
PLL0CON_bit.PLLC = 0; //PLL abkoppeln
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
PLL0CON_bit.PLLE = 0; //PLL ausschalten
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
CLKSRCSEL &= ~(1<<0)|(1<<1); // internen Oszillator auswählen
PLL0CFG_bit.MSEL = 75-1; //M=75,N=2
PLL0CFG_bit.NSEL = 2-1;
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
PLL0CON_bit.PLLE = 1; //PLL wieder einschalten
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
while(!PLL0STAT_bit.PLOCK); //warten bis PLL fertig ist
CCLKCFG = 3-1; //CCLK= Fcco/3
PLL0CON_bit.PLLC = 1; // PLL ankoppeln
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
}
void clock_output_init(void) //stellt den Takt für die Kamera auf P1.27 bereit
{
CLKOUTCFG_bit.CLKOUT_EN =0;
CLKOUTCFG &= ~(1<<0)|(1<<1)|(1<<2)|(1<<3); //CCLK auswählen
CLKOUTCFG = (1<<4)|(1<<5)|(1<<6); //duch 8 teilen 100/8=12,5
CLKOUTCFG_bit.CLKOUT_EN=1;
}
int main()
{
FLASHCFG=(1<<12)|(1<<14);
SETENA0=(1<<16);
test();
while(1)
{
}
}
Wenn ich den Inhalt der Funktionen einfach so in die Main kopiere klappts. Nur wenn ich die funktionen aufrufe, wie in meinem code gerade die test() funktion. Stürzt er ab und macht gar nichts mehr. Zudem gibt er mir immer folgendes aus : "Tue Apr 05 13:29:35 2011: The stack 'CSTACK' is filled to 100% (1024 bytes used out of 1024). The warning threshold is set to 90.% ". Mit der Meldung kann ich auch nur sehr wenig anfangen. Kann mir da jemand weiterhelfen? Wobei die Warunung nicht unbedingt im zusammenhang mit meinem Problem steht, da sie immer auftaucht sobald ich das programme downloade.
mfg
Erik