www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7 TMS470 Board (Keil) Problem


Autor: Michael Ts (_mike_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe wieder mal ein Problem mit meinem TMS470 Board.
Benötige einen ganz simplen Timer Interrupt.
Komme aber mit dem HET einfach nicht zurande. Der ist zwar unglaublich 
mächtig, nur für mich einfach zu komplex.

Würde mich freuen, wenn wer eine simple Lösung für einen einfachen Timer 
Interrupt zur Hand hätte.
Das IAR Beispiel (tms470r1b1m_HET_INT_02) welches genau diese 
Funktionalität offeriert, bekomm ich nicht zum Laufen unter Keil mit 
meinem RV Compiler.

lg mike

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Poste mal das komplette IAR Beispiel, am besten als zip, oder den 
Downloadlink.

Im HET musst du für einen Timer nur einen einzelnen CNT Befehl mit 
Interuptfähigkeit einrichten. Über den DATA Wert gibts du in 
Abhängigkeit von der HET LoopTime die Zeit für den Interupt ein.


Alle weiteren Dinge geschehen auf dem ARM7 Core und nicht im HET.

gruß
Ralph

Autor: Michael Ts (_mike_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir scheiterts bei diesem Beispiel an der Umsetzung.
Im konkreten Fall haperts daran, dass ich nicht nicht weiß wie ich 
diesen einen Befehl richtig ins HET RAM kopiere.

Ich finde dieses Beispiel nicht sehr übersichtlich gestaltet, es 
verwirrt mich eher als dass es mir hilft.

Danke vorerest für deine rasche Antwort.

lg mike

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übersichtlichkeit ist wirklich was anderes.


das HET Programm steht in der Struktur :

const HET_INIT0_PST[3]
jeder Befehl im HET besteht aus 4 * U32
welcher Befehl in welcher 4 er Gruppe steht, siehst du in der Datei 
tms470r1b1m_HET_INT_02_H.het

Um den Hetcode in der struct HET_INIT0_PST zu erzeugen gibt es von TI 
einen speziellen Compiler, es geht aber auch gut mit der Hand( ist nur 
eine Sauarbeit).

mit der Zeile
  MemCopy32((void *)&e_HETPROGRAM0_UN, (void *)HET_INIT0_PST,
            sizeof(HET_INIT0_PST));

wird der Hetcode aus der Struct in den Het Memory copiert, der HET 
Memory liegt bei 0x00800000


hier wird die Looptime und die Highresolution des Het eingestellt. Die 
Abhängigkeit von Systemtakt ist leider nicht sichtbar, aber vorhanden.
HETPFR  = 0x00000309;                   // Set LR Div = 8, HR Div = 10

und das hier schaltet den HET ein
  HETGCR |= ON;                           // Start HET


Mit diesen Einstellungen in den Files sollte der HET laufen. Überprüfen 
kannst du das mit einem Jtag, indem du ab Adresse 0x800000 den Memory 
ansieht.
Du wirst in den ersten 4 U32 ab dieser Adresse den ansteigenden Counter 
sehen.

Allerdings wirst du keinen Interrupt vom HET bekommen, da dieser nicht 
aktiviert ist.

Um den Interupt zu aktivieren musst du :

1. im Hetcode des ersten Befehls das IRQ bit setzen
   /* L00_0 */
  {
    0x00001600,
    0x00001CCB,
    0x00000000,
    0x00000000

2. Im Arm Core die Interuptquelle HET aktivieren

3. eine IRQ Routine schreiben, die im HET abfragt welcher HET Befehl den 
IRQ ausgelöst hat.


Der HET hat bis zu 128 Befehle und kann dazu bis zu 32 unterschiedliche 
IRQ erzeugen.


Gruß
Ralph

Autor: Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die extrem ausführliche und kompetente antwort!

hat mir sehr weitergeholfen!
werd mich jetzt dahinterklemmen und die infos verarbeiten!

thanx und gute nacht

lg mike

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.