8051 programm

Gast #336483
Lesenswert?

Hallo!

Ich hab da ein Problem mit meinem Programm:

Ich schließe eine gewisse Frequenz am port 1.4 an und ich weiß nicht
wie ich jetzt die frequenz ausrechnen soll und ausgeben soll!
Das Ausgeben ist nicht das Problem sondern eher wie ich die Timer
einsetzen soll?? Kann mir bitte jemand ein Programm schreiben das mir
jede Positive Flanke erkennt und daraus die Frequenz berechnen kann?
Ich suche schon seit 2 tagen die lösung, finde diese aber nicht! Habe
auch keinen großen Spielraum, da das Programm am Donnerstag fertig sein
muss! Darum bitte ich einen von euch mir das Programm zu schicken, es
ist sehr wichtig! Die Mühe wird belohnt :)!

Vielen dank im voraus
Gast #336484
Lesenswert?

Wieso klingt das nach dem gleichen Problem, das zwei andere Leute hier
im Forum haben?
Vielleicht solltest du dich denen anschliessen.
Und Programme, die man jemand anders zur Verfügung stellt, findet man
in der Codesammlung.
Gast #336487
Lesenswert?

@ stephan henning

Ja ich weiß nicht wie ich das programmiere mit den Timern!Für Profis
wie euch ist das eine Arbeit von 5 Minuten!Kannst du mir bitte so ein
kleines Programm schreiben?

Vielen dank im voraus
Gast #336494
Lesenswert?

(0) Nimm den Timer, schalte ihn auf konstanten Durchlauf.
(1) Dann wartest du auf eine Flanke ("Liegt immer noch L-Pegel am
Pin?")
(2) Hat der Pin seinen Zustand geändert, speicherst du den momentanen
Timer-Wert in einem (16Bit-)Register zwischen.
(3)Dann wartet man, dass wieder L-Pegel am Pin anliegt.
(4) beim nächsten Pegelwechsel (komplette Periode zuende) liest man
wieder den Timer-Wert ein.
(5) Jetzt subtrahiert man den ersten Wert vom zweiten undd hat damit
die Periodendauer in Timer-Taktzyklen.
Wie man von einer Periodendauer zur Frequenz kommt, wirst du wohl
selber wissen.
Zu diesem Thema empfiehlt sich auch die Lektüre des "Mikrocontroller
Applikations-Kochbuch" (auch) von Andreas Roth.
Gast #336495
Lesenswert?

moin moin,

@michael,

ohne Vorgaben ein Programm machen? Welche Programmiersprache?
Lips, Forth, Pascal, Basic, C oder doch lieber Assembler?
Selbst bei Bezahlung must Du so etwas wie ein Pflichtenheft erstellen.
Über welchen Frequenzbereich soll denn gemessen werden?

Wies geht hat Stephan schon geschrieben.
Nun solltest Du auch was an Quelle schreiben.

Mit Gruß
Pieter
Gast #336496
Lesenswert?

hallo Rahul!

Kannst du mir das bitte programmieren? Ich hab keine Lektüten zu Hand
und wenn ichs mir bestelle dauert es viel zu lange! Ich zahle was du
willst, bitte schreib mir so ein Programm in 80c51 Befehlssprache!

Vielen dank im voraus
Gast #336499
Lesenswert?

@stephan

Kannst du mir das Messprogramm schicken? Ich will später den Wert der
Frequenz in verschiedene Bereiche unterordnen aber dass weiß ich schon
wie ichs mache, ich brauche nur das Messprogramm, bitte
#336500
Lesenswert?

Du schreibst ...

> Ich hab da ein Problem mit meinem Programm:

Dann zeig doch mal was Du schon hast !!!!

Ich persönlich glaube Du hast keinen Schimmer und weist nicht mal wovon
wir reden..... siehe oben, Pflichtenheft !!!!!
So wird Dir hier wohl niemand helfen.
Du mußt Dich schon mal selber bemühen, dann wird Dir auch gehofen !!!

Also was Dein Programm schon hat, hier einstellen und dann sehen wir
Gast #336501
Lesenswert?

@stephan

Das Programm dass ich besitze ist  für die Umwandlung von ascii in hex!
Ich bemühe mich den ganzen tag wie ich die timer schreiben soll, aber
ich komm nicht weiter! Kannst du es mir bitte schreiben? Wenn ich das
Programm vor mir liegen habe, verstehe ich den ablauf und kann es für
spätere Programme verwenden!

Vielen Dank im voraus
Gast #336502
Lesenswert?

moin moin,

@Rahul,
ungünstig programmiert, einfacher so:
Timer als 16Bit auf 0
jb PortBit,$ ;warte auf LH-Flanke
Start Timer
jnb PortBit,$ ,warte auf HL-Flanke, ignorieren
jb PortBit,$ ;warte auf LH-Flanke
StopTimer
Timer auslesen, bei 12MHz Takt ist der Wert ca. in Mikrosekunden

Mit Gruß
Pieter
Gast #336505
Lesenswert?

@ Michael

Vielleicht solltest du dir einfach mal ein Datenblett zur Hand nehmen,
weil in denen ist das doch immer gut beschrieben. Frequenz+ evtl.
teiler vom Timer einstellen und dann noch Wert vorladen und fertig.
Also ich kenne den 8051 jetzt auch nicht, aber das sollte doch wirklich
kein Problem sein.
Du solltest dir einfach mal eine bessere Problemlösungsstrategie
überlegen, als hier wild in Foren rumzuschreiben und die Leute zu
nötigen, dir ein Programm zu schreiben. Später im Beruf fagst du dann
auch die Leute, ob sie deine Arbeit machen ?!?!!?...
Gast #336507
Lesenswert?

@unfähig

Du hast recht dass das später im beruf nicht die Lösung wäre aber
irgendwann braucht jeder einmal Hilfe und die benötige ich von den
Leuten im Forum die sich wirklich auskennen!Ich brauche nur das
Messprogramm!

vielen dank im voraus
Gast #336510
Lesenswert?

@karl heinz

dann zeig mir dass bitte wies geht, ich komm nicht weiter!ich will von
negativer bis negativer flanke messen und den wert in einen speicher
schreiben!

vielen dank im voraus
Gast #336511
Lesenswert?

Du hast die 2 Jahre Lieferzeit übersehen...
In der Zeit, wo du hier rumjammerst (weil dir der Ars** auf Grundeis
geht), hättest du schon längst die anderen 3-4 Threads zu dem Thema dir
angucken können. Da sind diverse Lösungsvorschläge gemacht worden.
Gast #336512
Lesenswert?

Ich hab auch ein Problem:

Ich hab hier eine Kuh und ich möchte der gerne Schwimmen beibringen,
aber bekanntermaßen haben die keinen Schließmuskel. Kann mir einer mal
ein Beispielprogramm schicken wie ich die restlichen Muskeln so
ansteuern kann, dass mir die Kuh nicht absäuft ??

Danke
Gast #336522
Lesenswert?

300Hz bis 200kHz
Wenn man davon den Kehrwert bildet, hat man die Timer-Zeiten (in diesem
Fall ist 300Hz wohl ausschlaggebend).
Wenn man eine Tor-Zeit von 10ms benutzen würde, könnte man einfach die
Impulse während dieser Torzeit messen (Timer als Counter...).
Dann hätte man auch fast gleich die Frequenz (etwas rechnen wird man da
noch müssen).
Man hätte dann zwischen 3 und 2000 Impulse...
Gast #336523
Lesenswert?

@ rahul

ich hab jetzt ein programm geschrieben dass mir die periodendauer
indirekt ausgibt. der wert wird in hex ausgegeben.ich hab auch bemerkt
dass ich nur bis 100khz reinschicken kann da mein prozessor nicht
schnell genug die werte bearbeiten kann, der fehler wird umso größer je
höher die frequenz ist die ich an port 1.4 reinschicke ist. wie mach ich
das jetzt mit der frequenz? frequenz = Periodendauer aber wie mach ich
das im programm?
Gast #336525
Lesenswert?

wenn du sooo ganz zufällig auf diese seite gestoßen bist und herrn
wolfgang scheibbs gar nicht kennst, woher kommt dann die tatsache dass
ihr die ein und die selbe ip-adresse habt? so ein zufall dass ihr den
selben pc für das wirklich sehr kriminell ähnliche problem
benützt;-)!??
bitte klär uns an diese stellt doch mal auf.

und ehrlich gesagt glaube ich kaum dass du das programm was du in
deinem letzten posting beschreibst selber geschrieben hast, ich hab
nämlich dass gefühl dass du nicht mal weißt wieviele timer der 8052 hat
und redest von timern?...sag mir doch bitte mal welche register indirekt
und welche direkt adresierbar sind;), bitte sag mir das und blamier mich
dann helf ich dir weiter, versprochen.

ps.wie alt bist du?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren