Hallo! Im folgenden Programm (Keil uVision 3 geschrieben) im Anhang, soll ich folgende Aufgabe lösen. Die Funktion TimerInit soll so wie in der Funktionsbeschreibung alle 3 Timer 0,1 und 2 verwenden können und man soll dazu noch die Zeit angeben können z.B.: time=5ms oder time=5us usw. Wie muss man den Parameter aMode bearbeiten bzw. verarbeiten? Und wie sieht die Initialisierung der einzelnen Timer im switch(timerNo) aus? Danke im Voraus MfG dt_rocky
...Du hast das Datenblatt des verwendeten Prozessors? Wann ist Abgabetermin? Ich habe hier auch noch ein paar Hausaufgaben - kann die bitte jemand für mich machen?? :-)))
Hallo Stefan!!! Abgabetermin ist am Montag :-) Der Prozessor ist der AT89C52, aber das ist eigentlich egal es geht nur um die Timer initialisierung usw. und das verstehe ich leider nicht. Ich hab mir meine Unterlagen durchgelesen jedoch kann ich das nicht so umsetzen wie es mein Professor will, der programmiert wie du vielleicht schon gesehen hast in einer "eigenen" Welt, soviele Typedefs usw. hab ich noch nie gesehen :-)) Könntest mir da bitte helfen dt_rocky
Nen Entrarer hab ich gerade nicht zur Hand. Ich könnte nur in ein ZIP reinschauen. Peter
Hallo! Moment Peter.....kommt gleich Freut mich das du dir das anschaust, hab schon auf 8052.com viele nützliche programme und erklärungen von dir gefunden. Könntest du mir zum besseren verständnis auch kommentare hinzufügen? Danke im Voraus dt_rocky
Good grief ! Das ganze sieht so aus, wie von einem Windows-Programmierer geschrieben, der noch nie einen MC in der Hand gehalten hat. Von dem solltest Du Dir auch erklären lassen, wie das Programm funktionieren soll. Warum die Timer über einen String-Parser initialisiert werden sollen, erschließt sich mir nicht, umständlicher gehts nimmer. Wenn das wirklich so Ressourcen verschlingend programmiert werden soll, ist der AT89C52 aber ratzfatz am Anschlag allein nur mit diesem Timerzeugs. Und für die eigentliche Applikation ist dann kein Platz mehr da. Kurz gesagt, der ganze Ansatz ist schon dermaßen verkorkst, daß ich keine Möglichkeit sehe, da noch zu helfen. Auch nimmt man dafür typischer Weise nur einen Timer, spart ne Menge Code (durch den Call-Back müssen die Interupthandler tonnenweise Register sichern). Auch ist man dann nicht auf nur 3 Timertasks beschränkt. In der Codesammlung ist so ein Scheduler auf MCs optimiert. Außer dem Stringparser hat der schon alles, was man braucht. Ist aber genau so wie Dein Codeschnipselchen auch nicht unbedingt ein Anfängerprojekt. Peter P.S.: Der 8051 hat deshalb mehrere Timer, damit man damit verschiedene Sachen machen kann, z.B. Timer, Zähler, PWM-Erzeugung, UART-Baudrate. Und nicht, um sie alle nur als Timer zu vergeuden. Wenn Dein Prof plötzlich noch die UART haben will, steht er nämlich ganz schön blöd da mit seinen 3 blockierten Timern.
Hallo Peter! DAAAAAAAAAAANKEEEEEEE das du das gesagt hast. Den Professor habe ich dieses Jahr das erste mal und er ist mir gleich so komisch vorgekommen. Gut ich werde mir das in der Code Sammlung anschauen, aber eigentlich wollte er uns Schülern glaub ich nur "zeigen" wie man Timer initialisiert bzw. sollten wir diese Funktion aMode machen die einen String in der Form no=1 //Timer Auswahl 0,1 oder 2 time=5ms //Zeit Ja und diesen String sollten wir dann bearbeiten und daraus den jeweiligen Timer initialisieren. Und jetzt denk ich mir wo du dir schon "schwer" tust das zu vestehen wie soll ich das machen wenn ich das Fach 2mal in der Woche habe. Naja das wusste ich aber schon vorher das man sich alles selbst beibringen muss bzw. sollte wenn man etwas können will. Ich habe zurzeit nur Erfahrung mit der Hardware von 8051 usw. hab schon ein wie ich finde nicht schlechtes board gemacht aber das wars und jetzt möcht ich natürlich sehr viel darüber lernen und natürlich auch wie man programmiert. Naja ist noch ein langer Weg bis dahin..... Wichtig ist der Wille ist da :-) PS: Er arbeitet nebenbei noch in München bei so einer Firma, und nonstop sagt er uns wie oft er schon software projekte gemacht hat die über 100000zeilen code gehabt haben und wie wichtig das ist das man das Programm Woche ja gar Monate vorher strukturiert und alle Funktionen beschreibt.... Am besten finde ich wenn er sagt ja da hab ich mal in einer firma gearbeitet die ist dann in die brüche gegangen (ja warum wohl :-)) weil sie wenig zeit in strukturierung gesetzt haben ..ttztztz
Naja, Strukturieren ist schon wichtig. Allerdings bevorzuge ich die Top-Down-Methode, d.h. wenn etwas zu komplex wird, teile ich es nach unten hin weiter auf. Mit der Bottom-Up-Methode besteht schnell die Gefahr, daß man etwas zu Tode strukturiert, also viele Sachen einbaut, die hintenraus garnicht gebraucht werden. Man hat dann nur unnötig viel Arbeitszeit verplempert. Bei der MC-Programmierung versucht man immer, alle zur Compilezeit bekannten Sachen schon zur Compilezeit ausrechnen zu lassen. Also z.B. statt:
1 | timerinit( "5ms" ); |
macht man lieber:
1 | #define TIMERDELAY 5e-3
|
2 | timerinit(); |
Das Define kann der Compiler einfach durch die Zahl ersetzen, kostet etwa 6 Bytes Code. Den String muß aber der MC zur Laufzeit parsen, kostet etwa 500 Byte Code und natürlich auch Rechenzeit. Es spricht aber überhaupt nichts dagegen, auch bei der Windowsprogrammierung es so zu machen. Warscheinlich brauchen Windowsprogramme nur deshalb so lange zum Starten, weil viele Konstanten erst umständlich zur Laufzeit ermittelt werden, statt schon zur Compilezeit. Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.