Probleme mit SYST_Handler Funktion

OP #6646070
Lesenswert?
• ▲
▼
Servus,

Ich versuche mich momentan an einer LVDT-Schaltung welche den PGA970 
(ARM Cortex M0) von Texas Instruments nutzt. Mein geschriebener Code 
kann bereits Spannungen erfassen und mehr oder weniger PWM-SIgnale 
ausgeben. Allerdings sind diese durch die verwendung von einfachen 
Zählschleifen recht unzuverlässig was die Zeiten angeht. Daher war es 
meine Idee die vorhandene SYST_Handler Funktion zu nutzen um mit dieser 
genaue Zeiten vorzugeben in denen ich auf High bzw Low für das 
PWM-Signal setzen kann. So weit so gut.

Mein Datenblatt gibt leider keine wirklich nützlichen Informationen zu 
dieser Funktion und google machte mich auch nicht wirklich schlauer. In 
meinen Projektfiles habe ich einmal die Config Funktion mit welcher ich 
angeblich die Taktzeit einstellen kann:

void SYST_Config(UL reloadCnt, UL systControl)
{
   /* Program reload value */
   SYST_RVR = reloadCnt;
   /* Clear current value */
   SYST_CVR = 0x0;
   /* Program status & control register */
   SYST_CSR = systControl;

Und die eigentliche SYST_Handler Funktion welche nur ausgeführt werden 
soll wenn der oben eingestellte wert erreicht wird? In diese habe ich um 
ihre funktion zu überprüfen einen Counter eingebaut.

UL Sys_Timer=0;
interrupt void SYST_Handler(void)
{
   /* Disable System tick  counter */
   SYST_CSR &= ~ST_ENABLE;

   /* Add code here */
   if (ST_ENABLE==1)
   {
       Sys_Timer=Sys_Timer+1;
   }

   /* Enable System tick  counter */
   SYST_CSR |= ST_ENABLE;
}
#endif /* SYST_TESTING */

Durch die Nutzung des Counters wurde dann sichtbar dass diese Funktion 
genauso oft durchläuft wie die Mainfunktion auch weshalb ich glaube dass 
hier irgendetwas noch nicht stimmt.
Ich habe außerdem gelesen, dass sehr kurze Timings im reload value 
vermieden werden sollten, da sonst womöglich nur doch die interrupt 
funktion ausgeführt werden könnte. Ist auf diese Art und Weise eine 
Regelung auf bis zu 50µs realisierbar?

MFG Paul

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.