mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8051 programm


Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul!

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

mfg michael

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: stefan henenberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
machs selber wennst schon so arogante entrys machst...pff!

Autor: feal (Gast)
Datum:

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du's bezahlst...

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja egal wenns funktioniert schick mir deine kontonummer auch gleich mit
:)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
100000 Euro und 2 Jahre Lieferzeit, OK?

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja egal ich nehm ein kredit auf, ich bin wirklich verzweifelt bitte!!

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe nicht wirklich viel Ahnung vom 8051...

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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........

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ rahul

in welche Programmiersprache kanns du es mir schreiben?

Autor: unfähig (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?!?!!?...

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht 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 !!!

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: unfähig (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ rahul

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

Autor: unfähig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ michael

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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@unfähig

nein; mit eagle kenn ich mich aus :)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Wolfram (Gast)
Datum:

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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@wolfram

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

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die schaltung nochmal

Autor: Karl heinz Buchegger (kbucheg)
Datum:

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

Autor: michael berger (Gast)
Datum:

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Pieter,

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

Wo denn ???

Gruß Stephan

Autor: re:michael berger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Marek Swierzy (marekswierzy)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.