Hallo, ich versuche an meinem AT91SAM764 einen der drei programmierbaren Clocks zum laufen zu bringen. Ich rufe die Funktion programmable_clock() von main aus auf. void programmable_clock(void) { AT91PS_PMC pPMC = AT91C_BASE_PMC; pPMC->PMC_PCKR[1] = 0x15; pPMC->PMC_SCER = (pPMC->PMC_SCSR | AT91C_PMC_PCK1); while (!(pPMC->PMC_SR & AT91C_PMC_PCK1RDY)); } Damit sollte nach meiner Meinung auf auf Pin 9 (PCK1) ein Clock herausgehen, der MCK geteilt durch 32 ist. Aber ich sehe auf meinem Oszi nichts. Was mache ich falsch? Muss ich davor noch den PIO-Controller auf Periferie B umschalten? Schönen Gruß, Johannes
sollte so gehen. Ist nur ein Bsp. mit anderen Signalen noch. AT91PS_PMC pPMC = AT91C_BASE_PMC; // First, enable the clock of the PIO AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ; AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA11_NPCS0 ) | //- CS-LCD ((unsigned int) AT91C_PA13_MOSI ) | //- MOSI ((unsigned int) AT91C_PA12_MISO ) | //- MISO ((unsigned int) AT91C_PA14_SPCK ), //- SCK Peripheral A ((unsigned int) AT91C_PA9_NPCS1 ) | //- CS_SOUND ((unsigned int) AT91C_PA17_PCK1 ) | //- CLK_SOUND ((unsigned int) AT91C_PA22_NPCS3 )); //- CS_DATA // Peripheral B *AT91C_PMC_SCER = AT91C_PMC_PCK1; //- CLK Sound pPMC->PMC_PCKR[1] = AT91C_PMC_PRES_CLK_8 ; while(!(*AT91C_PMC_SR & AT91C_PMC_PCK1RDY)); pPMC->PMC_PCKR[1] |= AT91C_PMC_CSS_PLL_CLK ; while(!(*AT91C_PMC_SR & AT91C_PMC_PCK1RDY)); Mfg
Danke schön. Mit den Funktionen läuft es wie erwartet. Aber kann mir jemand erklären, warum es nicht geht, wenn ich die Befehle, die in den Funktionen aufgerufen werden, selbst aufrufe? Das ist für mich unverständlich. Servus, Johannes
Hi, bei mir läuft es auch mit nicht, aber ich versuche auch einen anderen Pin anzusteuern. Ich versuch's hiermit: //Try to set Programmable Clock Output Controller to PB30 (PCK2) with Main CLK dbgu_print_ascii("Trying to configure clock, stopping first...\n\r"); AT91C_BASE_PMC->PMC_SCDR = AT91C_PB30_PCK2; DelayMs(1000); dbgu_print_ascii("Setting: AT91C_PMC_PRES_CLK_8 \n\r"); AT91C_BASE_PMC->PMC_PCKR[2] = AT91C_PMC_PRES_CLK_8 ; //while(!(*AT91C_PMC_SR & AT91C_PB30_PCK2)); dbgu_print_ascii("Setting: AT91C_PMC_CSS_MAIN_CLK \n\r"); AT91C_BASE_PMC->PMC_PCKR[2] |= AT91C_PMC_CSS_MAIN_CLK ; //while(!(*AT91C_PMC_SR & AT91C_PB30_PCK2)); //Setting Pin PB30 to Enable dbgu_print_ascii("Trying to enable clock\n\r"); AT91C_BASE_PMC->PMC_SCER = AT91C_PB30_PCK2; dbgu_print_ascii("Enabled?\n\r"); Ich hab das SAM7-EX256 Board von Olimex http://www.olimex.com/dev/sam7-ex256.html Vllt. weiß ja jemand wie ich ein CKL Signal aus einem Pin bekomme. Ich versuch jetzt erstmal den TC (Timer Counter) -- Ja, ich bin neu im Bereich MC Cya
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.