mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8 MHz uC -> Port Ausgabe 10 kHz


Autor: Dominik A. (expandable)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

eins vorweg ich bin was uC angeht Anfänger und habe folgende Überlegung: 
Ich will auf einem Pin vom Port H meines uC ein Rechtecksignal erzeugen 
mit der Frequenz von 10 kHz. Ich habe in anderen Beiträgen gelesen das 
dies evtl. mit einer Schleife zu erledigen ist, die als Counter dient 
und in meinem Fall also bis 800 (8.000.000 Hz/ 800 = 10.000 Hz) 
hochzählt bevor wieder von high auf low gewechselt wird. Meine Frage die 
sich mir jetzt stellt ist wie genau das ganze ist ??? Da ja für die 
Schleife ja auch Rechenzeit verbraten wird ??? Oder bin ich da völlig 
auf dem falschen Weg ????

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik A. schrieb:
> Meine Frage die
> sich mir jetzt stellt ist wie genau das ganze ist ???

Das hängt von deiner Genauigkeit beim Werteinstellen ab :-)

> Da ja für die
> Schleife ja auch Rechenzeit verbraten wird ??? Oder bin ich da völlig
> auf dem falschen Weg ????

Klar wird durch das Warten die ganze Rechenzeit verbraten. Falls du noch 
nebenbei was anderes machen willst, schau mal nach Timern.
:-)

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik A. schrieb:
> Ich will auf einem Pin vom Port H meines uC ein Rechtecksignal erzeugen
> mit der Frequenz von 10 kHz.

Welcher µC ist das?

Die meisten können per PWM so ein Rechtecksignal mit der eingebauten 
Hardware erzeugen. Das heisst, dass so ein Rechtecksignal nach 
Einstellung der entsprechenden Register genau 0% Rechenzeit der CPU 
kostet.

Gruß,

Frank

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> eins vorweg ich bin was uC angeht Anfänger

Sag bloss. :-)

> und habe folgende
> Überlegung:

Sie hakelt etwas deine Ueberlegung.

Dein Microcontroller verwendet seinen Takt um damit Befehle 
auszufuehren. Wieviele dieser Takte er fuer einen Befehl braucht haengt 
vom Controller ab, aber auch vom Befehl. Es gibt zu deinem Controller 
sicher eine Liste mit allen Assemblerbefehlen und da steht dann auch 
drin wieviel Takte jeder Befehl braucht. Damit koennte man es sicher 
hinbekommen das dein Controller die 10kHz sehr genau erzeugt. Genauer 
gesagt so genau wie dein Quarz ist.

Der Haken dabei ist das der Controller in dieser Zeit nichts anderes 
machen kann. Deshalb verwendet man dafuer lieber Timer, also spezielle 
Zaehlregister im Controller.

Olaf

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik A. schrieb:
> die als Counter dient und in meinem Fall also bis 800
> (8.000.000 Hz/ 800 = 10.000 Hz)
> hochzählt bevor wieder von high auf low gewechselt wird.
Überleg das noch mal in einer ruhigen Minute:
Damit würdest du dann eine "Wechselhäufigkeit" von 10000 Hz erreichen.
Das ergibt dann eine Rechteckfrequenz mit 5000 Hz am Portpin...   :-o

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.