Liebe Forum Mitglieder, erst mal im vorab, ich weis das es eine FW-lib von STM gibt, diese habe ich auch benutzt, jedoch kriege ich es leider nicht hin die eine Sekunde zu generieren. Im Anhang befindet sich meine RTC config und den code bei dem stm32f10x_it.c Am Anfang wäre ich erst mal glücklich, wenn die LED1_SEKUNDEN an gehen würde, was leider nicht funktioniert. Mit Sicherheit werdet ihr den Fehler finden, denn leider bin ich ein blutiger Anfänger beim programmieren. Ich bedanke mich jetzt schon für hilfreiche Beiträge von euch. Mit freundlichem Gruß Fabian
/* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) {} Hast Du auch wirklich einen externen 32KHz-Quarz angeschlossen?
Herbert schrieb: > /* Enable LSE */ > RCC_LSEConfig(RCC_LSE_ON); > /* Wait till LSE is ready */ > while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) > {} > > Hast Du auch wirklich einen externen 32KHz-Quarz angeschlossen? Ja ich habe einen 32,768kHz Quarz angeschlossen am LSE und einen 8Mhz Quarz. Ich betreibe den uC mit 24Mhz
>Am Anfang wäre ich erst mal glücklich, wenn die LED1_SEKUNDEN an gehen >würde, was leider nicht funktioniert. Port der LED falsch konfiguriert? Natürlich fehlt der Teil des Codes mal wieder.
dummy schrieb: >>Am Anfang wäre ich erst mal glücklich, wenn die LED1_SEKUNDEN an > gehen >>würde, was leider nicht funktioniert. > > Port der LED falsch konfiguriert? > Natürlich fehlt der Teil des Codes mal wieder. Das alles funktioniert! Das habe ich ja schon getestet und alle LED's angeschaltet. Ich habe nur den Code reinkopiert, was bei mir nicht funktioniert.
>Am Anfang wäre ich erst mal glücklich, wenn die LED1_SEKUNDEN an gehen >würde, was leider nicht funktioniert. Mit deinem Code wird sie auf jeden Fall nicht wieder ausgehen wenn sie erst mal an ist;)
schalt mal noch den RTC-Interrupt scharf
1 | NVIC_InitTypeDef NVIC_InitStructure; |
2 | |
3 | /* Configure one bit for preemption priority */ |
4 | NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); |
5 | |
6 | /* Enable the RTC Interrupt */ |
7 | NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; |
8 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; |
9 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; |
10 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; |
11 | NVIC_Init(&NVIC_InitStructure); |
UB
Uwe B. schrieb: > /* Configure one bit for preemption priority */ > NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); > > /* Enable the RTC Interrupt */ > NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; > NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; > NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; > NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; > NVIC_Init(&NVIC_InitStructure); Habe ich gerade getestet und leider springt er immer noch nicht rein. Kann es sein das mein 32,768kHz nicht funktioniert? Wie kann man so was testen? Danke im voraus...
Hallo Fabian, wenn Du einen externen Quarz angeschlossen hast, und dieser läuft, kommst Du bei der Initialisierung über diese while-Schleife rüber. Sonst bleibst Du dort hängen: /* Enable the LSE OSC */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) { } Das ist der Code aus einem STM32F2xx Projekt. Ev. sind die Funktionnamen etwas anders als beim 103er. Sonst kannst Du auch mit nem Scope schauen ob ob Du einen Takt hast. ABER: Der RTC Takteingang ist extrem empfindlich. Beim Messen kannst Du dort ev. auch mist messen :-) Auch musst Du bei der Quarz und Kondensatorauswahl genau aufpassen. Da gibt es eine App. Note (AN2867) von ST dazu. Es kann sonst sein, das der RTC-Quarz nicht anschwingt. Gruß Florian
Florian schrieb: > Hallo Fabian, > > wenn Du einen externen Quarz angeschlossen hast, und dieser läuft, > kommst Du bei der Initialisierung über diese while-Schleife rüber. Sonst > bleibst Du dort hängen: > > /* Enable the LSE OSC */ > RCC_LSEConfig(RCC_LSE_ON); > /* Wait till LSE is ready */ > while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) > { > } > > Das ist der Code aus einem STM32F2xx Projekt. Ev. sind die Funktionnamen > etwas anders als beim 103er. > > Sonst kannst Du auch mit nem Scope schauen ob ob Du einen Takt hast. > ABER: Der RTC Takteingang ist extrem empfindlich. Beim Messen kannst Du > dort ev. auch mist messen :-) > Auch musst Du bei der Quarz und Kondensatorauswahl genau aufpassen. Da > gibt es eine App. Note (AN2867) von ST dazu. Es kann sonst sein, das der > RTC-Quarz nicht anschwingt. > > Gruß > Florian Danke Florian für deine Antwort. Der Fehler lag an dem OSC32_IN Pin. Er war nicht richtig angelötet. Jetzt bekomme ich wenigstens den 1 Sekunden Takt. Jetzt muss ich mir den Code Basteln um eine Binäre Uhr draus zu machen. Vielen Dank an die anderen die mir helfen wollten. Lieben Gruß Fabian
Hallo Fabian, schön das es jetzt geht. Solche Sachen lassen einen echt verzweifeln. Der 103er hat leider nur ein 32Bit Zählregister. Du musst da alles selber machen um ein Uhr / Kalender zu programmieren. Such mal nach "Clock_calendar implementation on RTC AN2821". Gruß Florian
Ja leider verzweifelt man an den kleinsten Fehlern sehr lange... Genau diese Appnote habe ich auch schon gefunden, aber ich frage mich jetzt ob es da nicht schon fertige Projekte bzw. fertigen Code gibt? Da ich leider kein Profi in Sachen Programmierung bin, wäre es sehr hilfreich mal an anderen Projekten drüber zu schauen... Lieben Gruß, Fabian
Du suchst Code-Futter für Deine RTC? Da gibt's hier im Forum von Peter Dannegger was feines. Darauf basiert meine Gebastel. Ein paar andere Leute waren allerdings auch involviert. Ich hänge mein zwar nicht perfekten dafür funktionierenden Code mal an. Ist für nen STM32 F103 geschrieben. Aua, gleich gibts bestimmt Haue! ;-) mfg
:
Bearbeitet durch User
** Lötlackl schrieb: > Du suchst Code-Futter für Deine RTC? > Da gibt's hier im Forum von Peter Dannegger was feines. > Darauf basiert meine Gebastel. Ein paar andere Leute waren allerdings > auch involviert. Ich hänge mein zwar nicht perfekten dafür > funktionierenden Code mal an. > Aua, gleich gibts bestimmt Haue! ;-) > > mfg Ohhhhh vielen Dank Lötlackl, solche Codes habe ich schon sehr viele gefunden (bzgl. LCD etc.). Meine Uhr soll eine Binäre Uhr werden mit einem STM32f1 und da ist leider die Codesammlung nicht so berauschend. Klar wenn man GUT programmieren kann, dann ist es auch kein Problem dies kurz umzuprogrammieren :) (doch leider bin ich kein guter Programmierer) Liebe Grüße Fabian
Hmmm... hier geht es eigentlich nicht darum, wie man das Ergebnis der RTC darstellt. Wie Du die Ausgabe (auch meinetwegen binär) darstellst, obliegt Deinen Programmierkünsten.
** Lötlackl schrieb: > Hmmm... > > hier geht es eigentlich nicht darum, wie man das Ergebnis der RTC > darstellt. > Wie Du die Ausgabe (auch meinetwegen binär) darstellst, obliegt Deinen > Programmierkünsten. Ja da gebe ich dir vollkommen Recht! Ich werde das beste aus meinen "Programmierkünsten" geben und falls ich doch in Schwierigkeiten geraten werde wo ich nicht weiterkomme, kann mir mit Sicherheit jemand hier helfen... Danke euch allen
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.