Forum: Mikrocontroller und Digitale Elektronik 8051 programm


von michael berger (Gast)


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

von Rahul (Gast)


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.

von michael berger (Gast)


Lesenswert?

Hallo Rahul!

Davon weiß ich nichts, ich hab per Google diese Forum entdeckt und
wollte gleich mein Problem reinschreiben!

mfg michael

von Stephan H. (stephan-)


Lesenswert?

> Das Ausgeben ist nicht das Problem..
na dann kannst Du doch programmieren.......Wo ist das Problem mit den
Timern ?? Flanke abwarten, Timer Starten, bei nächster Flanke Timer
stoppen und Wert ausrechnen.

von michael berger (Gast)


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

von stefan henenberger (Gast)


Lesenswert?

machs selber wennst schon so arogante entrys machst...pff!

von feal (Gast)


Lesenswert?

stefan ned schimpfen, entweder helfen oder still sein. solche meldungen
helfen bei dem erreichne des zieles nicht weiter.

von Rahul (Gast)


Lesenswert?

Wenn du's bezahlst...

von michael berger (Gast)


Lesenswert?

ja egal wenns funktioniert schick mir deine kontonummer auch gleich mit
:)

von Rahul (Gast)


Lesenswert?

100000 Euro und 2 Jahre Lieferzeit, OK?

von michael berger (Gast)


Lesenswert?

ja egal ich nehm ein kredit auf, ich bin wirklich verzweifelt bitte!!

von Rahul (Gast)


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.

von Pieter (Gast)


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

von michael berger (Gast)


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

von Rahul (Gast)


Lesenswert?

Ich habe nicht wirklich viel Ahnung vom 8051...

von Stephan H. (stephan-)


Lesenswert?

@michael,

das eigentliche Meßprogramm ist bestimmt nur 10 oder 20 Zeilen lang.
Aber was willst du damit ???
Ist ja noch keine Anzeige bei, ..... die wolltest Du ja machen
in 80c51 "Befehlssprache" !!!!!

...da hat wohl jemand keinen Bock auf Hausaufgaben........

von michael berger (Gast)


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

von Stephan H. (stephan-)


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

von michael berger (Gast)


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

von Pieter (Gast)


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

von Rahul (Gast)


Lesenswert?

@Pieter:
Ich hab die Methode des Input-Capture des AVR gewählt...
Es gibt ja nicht nur eine Lösung. ;)

von michael berger (Gast)


Lesenswert?

@ rahul

in welche Programmiersprache kanns du es mir schreiben?

von unfähig (Gast)


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

von Stephan H. (stephan-)


Lesenswert?

na Pieter,
mal wieder als Samariter unterwegs ????
Nur gut die Displaysteuerung können wir uns sparen,
er hat ja schon ne Wandlungsrutine von ASCI nach HEX !!!

von michael berger (Gast)


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

von Pieter (Gast)


Lesenswert?

Hi Stepan,

bin grade dabei einen MB90F497 mit meinem! Prog zum Firmwaredownload zu
überreden, will noch nicht so.
Hast Du mal mein MultiBord angesehen?

Mit Gruß
Pieter

von Karl heinz B. (kbucheg)


Lesenswert?

> irgendwann braucht jeder einmal Hilfe

Schon richtig.
Aber eine Input-Capture ist mit Hilfe des Datenblattes
sowas von trivial aufzusetzen, dass es schon fast
weh tut.

von michael berger (Gast)


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

von Rahul (Gast)


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.

von unfähig (Gast)


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

von michael berger (Gast)


Lesenswert?

@ rahul

ich entwickle gerade die schaltung für die anwendung mit eagle

von unfähig (Gast)


Lesenswert?

@ michael

entwickelst du oder fragst du im nächsten Forum ?...

von michael berger (Gast)


Lesenswert?

@unfähig

nein; mit eagle kenn ich mich aus :)

von Rahul (Gast)


Lesenswert?


von Wolfram (Gast)


Lesenswert?

Zeig mal was du von der Schaltung schon hast(als GIF oder PDF) wäre
vielleicht hilfreich bei der Programmierung

von michael berger (Gast)


Lesenswert?

@wolfram

dies soll die schaltung sein die ich entwickeln will, aber ich brauche
zuerst die frequenzwerte die ich messen soll!

von michael berger (Gast)


Lesenswert?

die schaltung nochmal

von Karl heinz B. (kbucheg)


Lesenswert?

Na ja. Da kann dir hier aber keiner helfen.
Den abzudeckenden Frequenzbereich musst du schon selbst
wissen.

von michael berger (Gast)


Lesenswert?

ja den bereich weiß ich ja nur muss ich die zeiten vom timer messen und
ich weiß nicht wie das geht

von Rahul (Gast)


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

von michael berger (Gast)


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?

von Stephan H. (stephan-)


Lesenswert?

@Pieter,

Multiboard ??? Nee glatt übersehen .... :-((

Wo denn ???

Gruß Stephan

von re:michael berger (Gast)


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?

von Marek S. (Gast)


Lesenswert?

@michael berger nimm statt den P1.4
Einen Interrupt INT0 oder INT1 dann gehts auch bis ca. 3 kHz.
mit einem extra controller sogar bis 21 kHz.

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.