Re: Periodenmessung; Anfängerfragen Kategorie: Programmierung C (von PeterS - 30.12.2009 21:54) | |
Als Antwort auf Periodenmessung; Anfängerfragen von mat - 29.12.2009 22:54
| |
Hallo mat, >Andere Fragen: Ist es möglich, die zweite Hälfte des 128K-RAMs zu nutzen, wenn man PD4 per Programm >bedient? Es ist nicht befriedigend, die Hälfte das RAMs brach liegen zu lassen. Nein. >Gibt es Schlüsselwörter, die nirgends erklärt sind? In manchen Beispielen wird z. B. 'LED1' >verwendet, ohne dass zuvor eine entsprechende Initialisierung erfolgt wäre. In anderen Programmen >hingegen sind die Ports sehr wohl im Programmkopf zugewiesen worden. Das sind keine Schlüsselwörter. Es gibt #defines die in IntFunc_Lib.cc schon vordefiniert sind. Gruss Peter > Hallo! > Die Messaufgabe, die sich mir stellt, besteht darin, eine Folge von Rechteckimpulsen mit variablem > Tastverhältnis mit möglichst hoher Auflösung zu messen, in einem Array abzuspeichern und gleich- > zeitig einfache arithmetische Berechnungen mit den erhaltenen Werten durchzuführen. Die Impulse > bewegen sich in einem Bereich von 2 ms bis 100 ms Dauer. Wegen der viel versprechenden technischen > Daten und hier besonders der Funktion der Periodenmessung fiel meine Wahl auf die C-Control Pro > Mega 128. Leider funktioniert die Periodenmessung nicht wie erhofft. Wegen unplausibler Ergebnisse > habe ich mich etwas genauer damit befassen müssen und gefunden, dass nur jeder zweite Impuls > gemessen wird! Die mitgelieferten Programmierbeispiele führen in die Irre, da nur von der Mega128 > selbst erzeugte Impulse ausgewertet werden, die wegen der konstanten Länge nicht unterscheidbar > sind. Wenn ich hingegen eine Folge individueller Impulse mit einem Funktionsgenerator erzeuge, > ist das Phänomen sofort erkennbar. Es liegt offenbar daran, dass jede neue Periodenmessung mit dem > Befehl Timer_T3PM(1,PS_64); eingeleitet werden muss. Da das erst geschehen kann, wenn zuvor der > dazugehörige Interrupt ausgewertet worden ist, hat natürlich die nächste Periode bereits begonnen, > und die Messung kann erst mit der steigenden Flanke der darauf folgenden Periode beginnen. Der > Beweis ist, dass bei der Pulsweitenmessung jeder Impuls ausgewertet wird, weil die > Initialisierung des Zählers ja in der nachfolgenden low-Phase erfolgt. Die schöne Erklärung der > Capture-Funktion in der Datei 'ATmega128.pdf' Seite 116 ff. geht darauf leider nicht ein. Sinn > würde die Funktion machen, wenn der Zähler bei jedem Interrupt sofort auf Null gesetzt würde! Wei� > jemand eine Lösung? Oder habe ich mich verkauft mit dem Produkt? > > Andere Fragen: Ist es möglich, die zweite Hälfte des 128K-RAMs zu nutzen, wenn man PD4 per Programm > bedient? Es ist nicht befriedigend, die Hälfte das RAMs brach liegen zu lassen. > > Gibt es Schlüsselwörter, die nirgends erklärt sind? In manchen Beispielen wird z. B. 'LED1' > verwendet, ohne dass zuvor eine entsprechende Initialisierung erfolgt wäre. In anderen Programmen > hingegen sind die Ports sehr wohl im Programmkopf zugewiesen worden. > > Gibt es eine Systematik in der an sich sehr schönen Tabelle 'Pinzuordnung', was die Inhalte der > Spalten 'Name1', 'Name2' und 'Intern' betrifft? > > Ich wünsche allen Elektronikfreunden ein schönes neues Jahr! > > mat | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum