Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 15. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Lehrbrief 3 - S62 Frage 3

Postby endress » Fri Feb 26, 2010 12:00 am

Hallo Garak,

ich hab mich eben nochmal hingesetzt, die Aufgabe auf die Terminaleingabe korrigiert und die Messung überprüft.
Das Oszilloskop steht auf DC.

im Bild Auswahl 5. High 30 Low 100...
Attachments
dc-130ms.jpg
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby subzero » Sat Feb 27, 2010 12:00 am

das forum ist einfach das beste das es gibt besonderer dank an garak und rainer ihr gehört zu unseren felsen der Brandung haben mir schon oft geholfen 1000 dank ihr seid super
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby garak » Mon Mar 01, 2010 12:00 am

Hallo Endress,

hier einmal mein Oszilloskop Bild, wenn das Signal DC mäßig eingekoppelt wird!

Im Moment ist mir nicht ganz klar, warum Deine Ausgangsspannung keinen so rechteckigen verlauf aufweist wie bei mir.

Da ich denke, dass Du einen Tastkopf benutzt (Spannungsablenkfaktor 20V/Skalenteil) fehlt vielleicht die Verbindung zur Masse?

Bis dann,
Garak
Attachments

[The extension bmp has been deactivated and can no longer be displayed.]

garak
 
Posts: 39
Joined: Fri Jan 03, 2014 2:12 pm

Postby alexbeielektor » Mon Mar 01, 2010 12:00 am

könnte auch an einem nicht abgeglichenen Tastkopf liegen...
alexbeielektor
 
Posts: 32
Joined: Fri Jan 03, 2014 2:12 pm

Postby endress » Thu Mar 04, 2010 12:00 am

Ich messe direkt mit einem BNC Kabel ( 50 cm - 50 Ohm ) am TFH-DAA One.
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby μtronix » Thu Mar 04, 2010 12:00 am

Hallo Endress,

ich habe gerade mal Dein oszillographiertes Signal über eine Periode integriert und festgestellt, daß der DC-Anteil U_DC=0Volt beträgt.

Aufgrund Deines Signalverlaufes und des o.g. Ergebnisses tippe ich ebenfalls auf eine nicht angeschlossene Masseleitung oder vielleicht doch eine eingestellte AC-Kopplung.

Um das nun herauszufinden, kannst Du einfach mal Dein Programm so ändern, daß die Pulsbreiten wesentlich größer sind. Zum Beispiel so:


while( 1 )
{
printf("Setze Pegel auf LOW und warte 3 Sekunden.\n");
OUT = 0;
WaitMs(3000);
printf("Setze Pegel auf HIGH und warte 3 Sekunden.\n");
OUT = 1;
WaitMs(3000);
}


Als Basisprogramm kannst Du dann "rechteck_1.c" nehmen.

Ebenfalls solltest Du prüfen, was passiert, wenn Du mit den Einstellungen am Scope einfach einmal eine reine Gleichspannung mißt. Entweder machst Du das auch mit dem entsprechenden C-Code, oder Du verbindest das Scope mal mit der 5V-Versorgung des Core-Boards.
In jedem Fall mußt Du eine waagerechte Linie erhalten.

Prüfe dann noch mit einem Multimeter, ob die Masseverbindungen ok sind.

Dein Signalverlauf muß jedenfalls so aussehen wie der von Garak gepostete.

Schreibe doch auch mal bitte, welches Oszilloskop (Hersteller und Typenbezeichnung) Du einsetzt.


Viel Erfolg.

Gruß
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby endress » Mon Apr 12, 2010 12:00 am

Lange nichts hören lassen, wenig Zeit gehabt.

Nach Kalibrierung sieht die ganze Sache um einiges besser aus, wenn ich auch immernoch kein 100 % ig sauberes Rechteck bekomme.

Beim Oszilloskop handelt es sich um ein UNI-T UT2042C.

Ich habe mal etwas weitergemacht und die Sache mit dem Abschlusstest ( recht_2.c ) versucht. Da sieht das Signal um einiges "Rechteckiger" aus.

Liegts am Ende doch an meinem Programm ?

Eine neue Frage habe ich auch noch : Aufgabenstellung für recht_2.c war für jede Impulsbreite 1 ms, die Potis stehen auf Null. Kann man die Differenzen durchgehen lassen oder ist das einfach ne 6 ?
Attachments
recht-2.jpg
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby μtronix » Mon Apr 12, 2010 12:00 am

Hallo Endress,

schön, daß es mit Deinem Scope noch geklappt hat. Ich kenne das Gerät nicht ganz genau, deshalb könntest Du mal nachschauen, ob Du in den Einstellungen angeben kannst, daß Du einen TKT (Tastkopfteiler) 10:1 verwendest. Dann zeigt Dir das Scope hoffentlich auch die tatsächliche Spannung nahe bei 5V an, statt wie aktuell 50V. Wenn nicht, ist es auch nicht tragisch und der Meßwert muß dann eben umgerechnet werden.

Zu Deiner Frage: Bei Betrachtung der Musterlösung ist zu erkennen, daß die Impulsbreite immer etwas über 1ms liegen wird, da zwischendurch noch die AD-Wandlung bzw. das Warten auf das Wandlungsende stattfindet. Dies ist aber ok und so würde ich sagen: Aufgabe gelöst!

Wenn Du ein (quarz)genaues Signal mit einer Pulsbreite von jeweils 1ms haben möchtest, empfiehlt sich die Verwendung eines Timers/Counters in Verbindung mit Interrupts.
Darüber wirst Du dann in den nächsten Lehrbriefen Näheres erfahren.

Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

Postby endress » Wed Apr 14, 2010 12:00 am

Kann man einstellen, hab ich garnicht drauf geachtet sondern mich auf die Impulsbreiten konzentriert.

Irgendwie komm ich durch den dritten Lehrbrief nicht durch...

Die Aufgabe recht_3.c überfordert mich dann doch etwas. Ich wollte mich an die 150us ranntasten und hab ein scheinbar viel zu kompliziertes Konstrukt gebaut.

Nachdem es nicht funktionieren wollte, hab ich mir dir Musterlösung angesehen und getestet.

Wo steht denn, dass ein Schleifendurchlauf einer For-Schleife exakt 144us dauert ? Dementsprechend müssten ja 255 Durchläufe ein Vielfaches davon benötigen oder begeh ich da malwieder einen groben Denkfehler ?

Ich hoffe ich nerve niemanden mit meinen ewigen Nachfragen, aber ich möchts wirklich gern kapieren, bevor ich weitermache.
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby μtronix » Mon Apr 19, 2010 12:00 am

Hallo Endress,

wo genau hast Du die Info mit den 144us her? Zur allgemeinen Info nochmal: Es geht um den Abschlußtest in LB3, S.142. Die Aufgabenstellung gibt einen circa-Bereich an von 150us bis...

Das exakte Timing bestimmter Funktionen/Programmteile kann bestimmt werden, indem die Assemblerbefehle (Compiliervorgang: C -> Assembler -> Maschinencode) und deren "Abarbeitungsgeschwindigkeit" analysiert wird.

Neben dem vom Quarz ableitbaren Taktzyklus ist für die Abarbeitung eines Assemblerbefehles insbesondere der Maschinenzyklus entscheidend.

Deine Annahme mit dem Vielfachen ist zwar prinzipiell richtig, aber Dir sollte klar sein, daß in der Schleife ja nicht nur gewartet wird und eine gewisse Verzögerung dadurch zustande kommt. Je nachdem, welche Befehle innerhalb eines Durchlaufes abgearbeitet werden müssen, kann die Zeit deutlich variieren.
Allgemein ist aber die Bedingung der for-Schleife, die erfüllt sein kann oder nicht, der Indikator dafür, wie oft dieselbe durchlaufen wird. Wenn dann der Ablauf innerhalb der Schleife noch deterministisch (eindeutig festgelegt) ist, kannst Du den Ansatz mit dem ganzzahligen Multiplikator wählen.

Nochmal zum Thema 150us: berechne Dir einmal aus der Quarzfrequenz die entsprechende Periodenzeit, und dann die Maschinenzykluszeit. Du wirst sehen, daß ganzzahlig Vielfache von diesem "krummen" Wert niemals 100%ig exakt den Wert von 150us annehmen können.

Viele Grüße
Patrick
μtronix
 
Posts: 197
Joined: Fri Jan 03, 2014 2:12 pm

PreviousNext

Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest