Hallo, warum liefert das folgende Programm Vcc/2 am Ausgang, obwohl das Tastverhältnis Vcc/3 liefern sollte? #include <avr/io.h> void delay_us (unsigned short us); void delay_us(unsigned short us) { while ( us ) us--; } int main (void) { unsigned char t_ein = 100; //liefert 2,6V am Ausgang unsigned char t_aus = 50; unsigned char x = 0; outp (0xFF, DDRB); for (;;) { while (x<t_ein) { outp(0x00, PORTB); delay_us (100); x++; } x = 0; while (x<t_aus) { outp(0xFF, PORTB); delay_us (100); x++; } } }
Wenn ich dein Prg so sehe, würde ich sagen du hast ein am Ausgang ein Tastverhältnis von 2/1. Womit hast du die Spannung gemessen? Mit normalen Voltmeter? Kontrolliere deine erzeugten Impulse mit einem Oszi. Dort solltest du das Taktverhältnis sehen. Ich bin mir nicht sicher, aber ich glaube ein Voltmeter verfälscht die Ergebnisse gewaltig, wenn die Messspannung nicht konstant und sinusförmig ist, daher könntest du zu falschen Messergebnissen kommen.
In der Schleife hat x schon den Wert t_aus, den es bis t_ein hochzählt. Ausnahme: beim 1. Durchlauf ist x = 0.
Hallo, vielen Dank für die Resonanz. Der Fehler lag darin, dass ich x nach der zweiten while-Schleife nicht wieder auf 0 gesetzt habe. Jetzt liefert das Multimeter (sponsored by ALDI --> für den Anfang reicht es ;-) allerdings 1,7V bei DC und 3,4V bei ner AC Messung?! Letzteres käme ja dem gewünschten Ergebnis nahe. Ich werde mir jetzt mal nen Tiefpass basteln und schauen, ob ich auch 3,4 Volt Gleichspannung raus bekomme. Schönen 2. Advent noch, Alex
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.