www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung über ICP


Autor: Pascal Enz (pascalenz)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich bereits einmal bei euch im Forum bemerkbar gemacht.

Ich will über den ICP ein 58kHz Rechtecksignal messen.

Den Atmega128 betreibe ich mit 8MHz.
Der Noise-Cancler ist aktiv.

Die Übertragung über RS232 funktioniert soweit.

Das Problem ist, dass egal ob ich ein generiertes 1kHz Signal, oder die 
geforderten 58kHz in den Pin ICP einspeise, das Resultat bleibt sich 
gleich. (klar, es schwankt ab und an).

Die Frequenzauswertung wird über das zugehörige .net Programm 
ausgewertet.

Danke fürs Antworten.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> das Resultat bleibt sich gleich. (klar, es schwankt ab und an).

Was soll man dazu sagen?

Autor: Ohh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerd mal im interrupt einen freien Pin toggeln, um zu sehen, ob der 
capture interrupt auch im richtigen moement kommt.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pascal Enz wrote:

> Der Noise-Cancler ist aktiv.

Das stimmt schon mal nicht.

Autor: Pascal Enz (pascalenz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe einen Pin Togglen lassen.

Das ICF wird ordnungsgemäss gesetzt und die Routine abgerufen.
Auch die Overflow-Routine wird ausgelöst (am Oszi gemessen).


Das komische ist, dass das Overflow-Register immer mit dem Wert 192dez. 
ausgegeben wird.
Das Overflow-Register befindet sich auf R21.

Jemand weitere Ideen?

Autor: Ohh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Der Overflow hat damit eigentlich gar nichts zu tun. Der kommt 
eigentlich immer bei 256, ref 65536. Der Capture Event liest nur den 
Zaehler aus und wirft den Zaehlerwert in das Captureregister. Wenn man 
sich fuer die Periodelaenge interessiert, sollte man den Zaehler im 
capture interrupt nullen. Nein ?

Autor: Pascal Enz (pascalenz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich messe die Differenz der zwei ICP Interrupts. Zeit zwei minus Zeit 
eins gibt die Taktdifferenz. Dazu das Overflow-Register mit 65536 
multiplizieren und dazuaddieren.

Also das Rechenprinzip ist mir klar.

Ich habe den Code nun mal so abgeändert, dass ich das Overflow-Register 
auf den Wert 100d fixiere und ihn auch nicht hochzählen lasse.
Trotzdem kommt bei der Übertragung der Wert 178 für R21 heraus.
overflow:
push temp
in temp,SREG
push temp

ldi mpr,100
mov overf,mpr


pop temp
out sreg,temp
pop temp
reti
polling_meas:

ldi temp,1
cpse finito,temp
rjmp polling_meas
cli
ldi zeichen,'@'
rcall serout
mov zeichen,time11
rcall serout
mov zeichen,time12
rcall serout
mov zeichen,time21
rcall serout
mov zeichen,time22
rcall serout
mov zeichen,overf
rcall serout
ldi finito,0
ldi status,0
rjmp init

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> out TCNT1L,temp
> out TCNT1H,temp
Das ist die falsche Reihenfolge! Beim Schreiben muss erst das High-Byte 
ausgegeben werden.

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.