www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SAM7: Impulszählung


Autor: Jörg Rupprecht (rupprecht_joerg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe ein Problem mit dem Timer des AT91SAM7S256. Ich möchte Impulse, 
welche am TIOAx - Eingang (0 und 1 benutzt) anliegen, zählen indem ich 
diese Frequenz als externe Counterfrequenz für das jeweilige CV-Register 
verwendete. Über das BMR müsste das, zumindest wenn ich die Beschreibung 
richtig verstanden habe, funktionieren. Leider tuts nicht so in der 
Realität.
Nach einer bestimmten Torzeit will ich das CV-Register auslesen und 
löschen. Das Ganze beginnt dann von neuem.

Hier noch die wichtigen Auszüge aus dem Source:

Init:
     AT91C_BASE_TCB->TCB_BMR = (AT91C_TCB_TC0XC0S_TIOA1 |
          AT91C_TCB_TC1XC1S_TIOA0 | AT91C_TCB_TC2XC2S_NONE);

Enable:
     AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS;
     AT91C_BASE_TC1->TC_IDR = 0xFFFFFFFF;
     ui_Status = AT91C_BASE_TC1->TC_SR;
     // Zähler aufsetzen (XC1)
     AT91C_BASE_TC1->TC_CMR = (AT91C_TC_CLKS_XC1);
     // Zähler aktivieren
     AT91C_BASE_TC1->TC_CCR = (AT91C_TC_CLKEN | AT91C_TC_SWTRG);
     ui_Status = AT91C_BASE_TC1->TC_SR;
     AT91C_BASE_TC1->TC_CCR = (AT91C_TC_CLKEN);

Disable:
     AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS;

Read:
     ui_Status = AT91C_BASE_TC1->TC_SR;
     ui_Zwischen = AT91C_BASE_TC1->TC_CV;
     if ((ui_Status & AT91C_TC_COVFS) == AT91C_TC_COVFS)
         ui_Zwischen += 65536;
     // Lösche CV
     AT91C_BASE_TC1->TC_CCR = (AT91C_TC_CLKEN | AT91C_TC_SWTRG);
     ui_Status = AT91C_BASE_TC1->TC_SR;
     AT91C_BASE_TC1->TC_CCR = (AT91C_TC_CLKEN);

Habe mein Problem an die Hotline von Atmel gesandt, aber nur einen
Beispielcode ohne Zusammenhang zu meinem Problem bekommen.

Möchte keinen Interrupt verwenden! Momentan läuft schon eine 
Interruptlösung für das Problem, welches aber durch weitere Interrupts 
bei höherer Eingnagsfrequenz zu einer hohen Auslastung des MC´s führt.

Vielleicht kann mir doch noch einer helfen ;-) Die Hoffnung stirbt 
zuletzt.

Im Voraus besten Dank und Grüße
Jörg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.