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


von Dominik A. (expandable)


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 ????

von Floh (Gast)


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.
:-)

von Frank M. (ukw) (Moderator) Benutzerseite


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

von Olaf (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.