Hallo,
ich verstehe die Initialisierung für das PWM noch nicht.
Ich initialisiere erfolgreich den Analogausgang an PB1:
[cpp]
TCCR0A = 3<<COM0B0 | 3<<WGM00; //only PWM on PB1(Led)
TCCR0B = 0<<WGM02 | 1<<CS00;
TCCR1 = 0<<PWM1A | 0<<COM1A0 | 1<<CS10;
GTCCR = 1<<PWM1B ;
OCR0B=0xff;
OCR0A=0xff;
[/cpp]
Ich kann nun via OCR0B=val; Spannungen auf PB1 ausgeben.
Dies muss aber auf PB0 erfolgen, also verwende ich
OCR0A=val;
Aber das funktioniert nicht.
Wie kann ich das PWM dazu bewegen, nur auf PB0 auszugeben ?
Echt vielen Dank für Hinweise
Grüße
Karsten
Hallo Joachim,
ich habe meine Initialisierung durch die deine ersetzt, nun erlange
ich auch an PB1 kein Signal mehr, und PB0 bleibt auf null.
Hallo Gast, doch. Mit meiner Initisalisierung (oben) wird PB1 analog
beschrieben.
Hallo Matthias,
mit deinem Example wird PB1 analog betätigt über:
OCR0B=val
aber
OCR0A=val
Verändert nicht den Wert von PB0.
PB0 stand wie PB1 bei der Initialisierung auf Ausgang(DDRB|=(1 <<PB0))
und kann im weiteren als GPIO nach der Initialisierung
als PWM betätigt werden(PORTB|=(1<<PB0)).
Das ist für PB1 nicht nach der Initialisierung als PWM nicht möglich.
PB2 verwende ich bereits als AnalogInput:
1
//10 bit
2
ADMUX=
3
(0<<ADLAR)|// do not left shift result (for 10-bit values)
4
(0<<REFS2)|// Sets ref. voltage to internal 1.1V, bit 2
5
(1<<REFS1)|// Sets ref. voltage to internal 1.1V, bit 1
6
(0<<REFS0)|// Sets ref. voltage to internal 1.1V, bit 0
Karsten S. schrieb:> Hallo Gast, doch. Mit meiner Initisalisierung (oben) wird PB1 analog> beschrieben.
nein, dadurch wird an PB1 ein Rehtecksignal ausgegeben
Hallo Walter , hallo Ralf,
Wie auch die Waveform geartet ist, ich kann 0-5V Durchregeln auf PB1.
Jedoch nie auf PB0.
Die MUX Geschichten habe ich still gelegt, daran lag es nicht.
PB0 ist alternativ als GPIO einwandfrei verwendbar.
Gruß
Karsten
Karsten S. schrieb:> Wie auch die Waveform geartet ist, ich kann 0-5V Durchregeln auf PB1.
Woher weißt du das? (Multimeter zählt nicht, das ist die falsche
Antwort!)
> Die MUX Geschichten habe ich still gelegt, daran lag es nicht.
Dass die ADC-Eingänge darauf keinen Einfluss haben, ist schon klar.
Das scheint wie der Kollege schon sagt keine PWM Signal
im klassischen sinne zu sein, lediglich haut der Timer
flanken auf den Port die Gewindigkeit macht die Amplitude aus.
Ergebniss ist 0-255 entspricht ~0-5V am P0 oder alternav am PB1
Erstmal vielen Dank für all die Hinweise
das hat weitergeholfen
Gruß Karsten
Karsten S. schrieb:> Das scheint wie der Kollege schon sagt keine PWM Signal> im klassischen sinne zu sein, lediglich haut der Timer> flanken auf den Port die Gewindigkeit macht die Amplitude aus.
Unsinn... Kann er laut Datenblatt garnicht. Der hat n ganz normalen
PWM-Baustein drinnen.
Ist ein schönes Signal was ich genau so wie ein Analoges Röhren Signal
anwenden kann, selbst mein Multimeter misst die genaue Spannung die ich
anlege, es ist mit hoher Frequenz, ein wie auch immer geflanktes Signal
am oszi. Wo ist das Problem Gast ? Alles funktioniert hier.
Karsten S. schrieb:> es ist mit hoher Frequenz, ein wie auch immer geflanktes Signal> am oszi.
Dann lass uns nicht dumm sterben und zeige uns mal das Oszillogramm. Das
würde mich jetzt wirklich brennend interessieren.
Also ich bin kein Elektroniker, nur ein Softwareentwickler
und bezüglich welche Register es zu setzen galt damit ich
mit dem Multimeter was sehe, wurde total erfüllt.
Was ist nun an dem Signal schlecht ? Das es flankiert ist, und
nur die Mitte gemessen wird am Multim. ?
Das es Lücken bei hoher Abtastfrequez aufbeißt ? oder was ist damit ?
Karsten S. schrieb:> Was ist nun an dem Signal schlecht ?
es ist nicht schlecht, es ist anders.
Es gibt Anwendungen die brauche eine Gleichspannung und andere kommen
auch mit so einem PWM Signal klar.
Karsten S. schrieb:> Was ist nun an dem Signal schlecht ? Das es flankiert ist, und> nur die Mitte gemessen wird am Multim. ?
Richtig... DAS ist schlecht! Ein Multimeter hat eine extrem hohe Latenz
und mittelt die Werte über einen gewissen Zeitraum.
Du hast an deinem Pin entweder 0 oder aber 5 Volt - nichts dazwischen.
Gedenke an den Fall... wo du gerade von Röhren sprichst... regel mal
eine Röhre, weil du denkst du hast da 2,7V am Ausgang, mit diesem Pin
an. Du gibst da keine 2,7V drauf sondern Frequentierst sie mit mehreren
Kiloherz immer mit 0 und 5 Volt. Was denkst du denn wie lange diese
Röhre das mitmacht?!
Und das kannst du auf alles anwenden was ein analoges Signal bedarf. Es
wird halt aus und wieder eingeschaltet und bekommt keine Gleichspannung
geliefert. Hast dann am anderen Ende einen µC und du denkst da kommen
dann 3V3 an, und du pumpst da 5V drauf - so ist der im Eimer. Bzw,
sollte er das überleben ist das Signal sowieso fürn Eimer, weil er ja
ständig springt zwischen 0 und 5V.
Du als Programmierer müsstest aber den Unterschied kennen zwischen 0 und
1. Und mehr ist das nicht! (Gut, es gibt noch float... das wäre dann 0.5
:-D aber das steht wieder auf nem ganz anderen Blatt :-D )
Aber ich habe es nun nicht falsch programmiert, PulsWeitenModulation
nennt man das ja, und wer's denn braucht, kann sich ja noch einen
Kondensator dazu legen.
Wenn ich nun das eigene PWM Signal auf meinen Atiny85 -ADC lege,
kann ich damit wunderbar wieder die eingestellten Spannungen
erreichen/messen. Es ist allerdings richtig, das ich 100 Werte sammle
und die Mitte davon als ANL Input gewinne.
Der Wert ist ganz gut, natürlich "steht" der nicht wie eine eins.
Aber es reicht um z.b. einer WAGO / BECKHOF Klemme mitzuteilen, das ich
1V oder 2V oder 5V anlege. Richtig ?
Oder siehst Du das anders ? Denn genau dafür will ich das getriggerte
Signal verwenden.
Danke für Hinwiese
Gruß Karsten
Bei dieser Unwissenheit, stehen mir die Haare zu Berge.
Man kann mit einem PWM-Signal, ohne weitere analoge Filterung und
Verstärkung, keine Gleichspannung abnehmen.
Liebe Moderatoren, muss man solch einen Humbug dulden ?
Karsten S. schrieb:> Aber ich habe es nun nicht falsch programmiert,> PulsWeitenModulation> nennt man das ja, und wer's denn braucht, kann sich ja noch einen> Kondensator dazu legen.>> Wenn ich nun das eigene PWM Signal auf meinen Atiny85 -ADC lege,> kann ich damit wunderbar wieder die eingestellten Spannungen> erreichen/messen. Es ist allerdings richtig, das ich 100 Werte sammle> und die Mitte davon als ANL Input gewinne.>> Der Wert ist ganz gut, natürlich "steht" der nicht wie eine eins.>> Aber es reicht um z.b. einer WAGO / BECKHOF Klemme mitzuteilen, das ich> 1V oder 2V oder 5V anlege. Richtig ?>> Oder siehst Du das anders ? Denn genau dafür will ich das getriggerte> Signal verwenden.>> Danke für Hinwiese> Gruß Karsten
Hier auch nochmals eine Erklärung für einen Tiefpassfilter.
https://de.wikipedia.org/wiki/Tiefpass
Du solltest, je nach Qualität deines PWM Signals, mehrere Tiefpassfilter
hintereinander schalten. Solltest du die genaue 0-5V brauchen, benötigst
du aber einen aktiven Tiefpassfilter. Oder du machst das dann "clever"
in der Software. Also für 0... dann wirklich deine PWM ausschalten und
GND ziehen oder für 1 dein PWM ausschalten und auf VCC ziehen.
Geht alles,
eben ausprobiert WAGO Busklemme ANL misst zumindest auf ~0.5V
genau was ich ausgebe, bin dann glücklicherweise mit 8[Khz] noch im
Zeitschlitz.
Also ich weiß das dies ein hacke -Signal ist. Es ist gut genug für die
Anwendungen, einen MP3 Player wollte ich damit nicht herstellen :)
Das PWM so verhasst ist wusste ich gar nicht :)
Viele AFU's hassen auch SDR(SoftwareDefinedRadio) ^^.
Danke für die Rege Beteiligung
Grüße aus Berlin
Karsten
Karsten S. schrieb:> Das PWM so verhasst ist wusste ich gar nicht :)
PWM ist nicht verhasst, aber ein PWM-Signal als analoge Spannung zu
bezeichnen ist einfach falsch, auch wenn Du mit mehr oder weniger
Aufwand eine daraus machen kannst.
Und nur weil es bei Deiner Anwendung grad mal so funktioniert wie Du es
möchtest ist das trotzdem nicht richtig oder immer so.
Karsten S. schrieb:> eben ausprobiert WAGO Busklemme ANL misst zumindest auf ~0.5V> genau was ich ausgebe, bin dann glücklicherweise mit 8[Khz] noch im> Zeitschlitz.
Jetzt mal ehrlich, welchen Wago nutzt du denn? Ich kann mir beim besten
Willen nicht vorstellen das dies funktionieren soll:
PWM -> Wago Klemme
8Khz ist ja auch noch relativ langsam was PWM angeht.
Karsten S. schrieb:> Also ich weiß das dies ein hacke -Signal ist. Es ist gut genug für die> Anwendungen, einen MP3 Player wollte ich damit nicht herstellen :)
Das hat doch nichts mit einem "Hacke-Signal" zu tun. Es ist eine PWM.
Ein digitales Signal, welches nunmal nur aus 0 und 1 besteht. Und ein RC
Glied hat nun weißgott nichts mit der Herstellung eines MP3 Players zu
tun, das ist das was ein DAC Wandler auch macht.
Karsten S. schrieb:> Das PWM so verhasst ist wusste ich gar nicht :)
Isses nicht, PWM ist eine feine Sache! Eine sehr feine Sache! Aber halt
richtig angewandt.
Karsten S. schrieb:> Viele AFU's hassen auch SDR(SoftwareDefinedRadio) ^^.
Solltest du wirklich aus dem Amateurfunk Bereich kommen... dann glaube
ich langsam wirklich das ich hier einem Troll aufgesessen bin. Denn dann
wärst du derjenige gewesen der hier einen Tiefpassfilter vorgeschlagen
hätte um das PWM zu glätten.
Knut B. schrieb:> Mein lieber Herr Gesangsverein, hier geht ja was ab... So viel Ignoranz> habe ich lange nicht gesehen...
Dito. Das nenne ich mal Beratungsresistenz! :-D
Draco schrieb:> Jetzt mal ehrlich, welchen Wago nutzt du denn? Ich kann mir beim besten> Willen nicht vorstellen das dies funktionieren soll:
eventuell hat er ja ein paar 100m Kabel bis zur Wago, und damit
unbewusst eine RC Glied.
10 Meter, steckt im Schrank und ich am Tisch
(welche Beratungsresistenz, nichts wurde dementiert, die Register wurden
gefunden.
Das nur das Wort analog Output erwähnt worden ist, war das Verbrechen..
Es ist lediglich eine Frage der Wahrnehmung. Und die ist bei allen
Menschen halt nur ein gestörtes -Interpolat. Wie alles andere auch,
nichts ist echt :)
Karsten S. schrieb:> 10 Meter, steckt im Schrank und ich am Tisch
es ist halt sehr merkwürdig, das es ordentlich funktioniert. Es könnte
genauso passieren das die Wago mal 5V und beim nächsten messen mal 0V
anzeigt.
Peter II schrieb:> es ist halt sehr merkwürdig, das es ordentlich funktioniert.
Das ist einfach nur Glück. Irgendwann ist so eine Glückssträhne aber
auch wieder vorbei...
Karsten S. schrieb:> WAGO Busklemme ANL misst zumindest auf ~0.5V genau was ich ausgebe, bin> dann glücklicherweise mit 8[Khz] noch im Zeitschlitz.
Roulette gespielt und Glück gehabt: die Wago-Klemme 750-457 mit
Spannungseingang hat laut Datenblatt z.B. eine Messdauer von 10ms.
Oder du hast die 750-467 mit einer Wandlungszeit typ. 2 ms.
Und wegen dieser Wandlungszeiten haben die zum Glück (und zur Beruhigung
der Herren Nyquist und Shannon) auch ein passendes RC-Glied als Tiefpass
integriert.
Leider sind diese "Filterblöcke" der Eingangsbeschaltung im WAGO
Blockschaltbild unüblicherweise nicht als Tiefpass-Filter (Ua als
Funktion von f) gezeichnet, sondern als Ladekurve von PT1-Gliedern (Ua
als Funktion der Zeit)...
Und jetzt mal den Bleistift gespitzt und losgerechnet:
Die Klemme mit den schnelleren 2ms (=500Hz) zusammen mit der 8kHz-PWM
ergeben 8KHz/500Hz = 16 --> 4 Bit "Rauschabstand", und genau das misst
du mit deiner erreichten "Genauigkeit" von 5V/~0,5V = ~10/1 = ~3,2 Bit.
Hier noch eine Betrachtung, wie du dein RC-Glied auslegen müsstest, wenn
du tatsächlich auf 1% genau (oder auch genauer) werden willst...
http://www.lothar-miller.de/s9y/archives/11-RC-Glied-fuer-PWM.html
Du siehst: man muss sowas nicht ausprobieren, man kann es ausrechnen
und weiß dann, was auf einen zukommt.
Karsten S. schrieb:> Alles funktioniert hier.
Lustig, genau diese Einstellung hatte ich gestern im
Beitrag "Re: Wie lehrnt man "richtig" einen µC programmieren?" angeprangert... ;-)
Karsten S. schrieb:> Also ich bin kein Elektroniker, nur ein Softwareentwickler> und bezüglich welche Register es zu setzen galt damit ich> mit dem Multimeter was sehe, wurde total erfüllt.
Wenn du als "Nicht-Automechniker" an den Bremsen herumschraubst, dann
musst du trotzdem wissen was du tust. Du darfst nicht einfach ein paar
Schrauben weglassen und sagen: "Hält auch so. Was ich wollte ist
erfüllt!"
Oder andersrum: DU willst aus einem PWM ein Analogsignal erzeugen. Dann
musst auch DU dir die nötigen Grundlagen und das Wissen dazu aneignen.
Sonst bleibt das alles nur zufälliges Gebastel...
Hallo Lothar,
richtig 750-457, ich sehe auch das der Baustein Atiny85 mit 16.5 bzw 20
Mhz läuft ich verwende den internen osc. Implementiert habe ich eine
eigene Abwandlung der V-USB Schnittstelle.
8Khz.. Stimmt also nicht, es müsste durch die 16.5 Mhz weit mehr sein.
1
voidinitDAC(void)
2
{
3
TCCR0A=3<<COM0A0|3<<WGM00;
4
TCCR0B=0<<WGM02|1<<CS00;
5
6
OCR0A=0xff;
7
}
Dies ist der "schnellste" Prescaler CS00, ich Messe 10[µs].
Das Teil läuft also mit 100[Khz]. Gemessen Tektronix Osci.
Jetzt mit kurzer Leitung ist das Ergebnis noch besser.
Wüster watt.. ich verkauf das jetzt so weiter, und würde mich damit zum
Mond schießen lassen, und ich wüsste das eine Wiederkehr nicht davon
abhängen wird :)
Danke für aller Hinweise und Kritik !
Gruß K aus B
Karsten S. schrieb:> Wüster watt.. ich verkauf das jetzt so weiter
Mit 100kHz Rechteck und 10m Antenne? Warum eigentlich nicht?
Was ist denn an 1 Widerstand und 1 Kondensator so teuer, dass du es
nicht gleich richtig machen kannst? Nimm einen 220Ohm Widerstand und
einen 22uF Kondensator und fertig ist die Laube.
Lothar M. schrieb:> Karsten S. schrieb:>> Wüster watt.. ich verkauf das jetzt so weiter> Mit 100kHz Rechteck und 10m Antenne? Warum eigentlich nicht?
Man bedenke: er ist Amateuerfunker, er müsste wissen was er da tut! :'D
P.s.: Danke Lothar, sehr guter Post mit deiner Berechnung! Die
Berechnung des "Rauschabstandes" bzw. der eingehenden Geschwindigkeit
einer PWM in einen Pin abhängig dessen "Eingangsgeschwindigkeit" kannte
ich noch garnicht, wieder was gelernt. Hilft sehr.
Hallo,
es sei noch angemerkt, dass ein Atiny85 auch intern über den RC
Oszillator mit 16MHz laufen kann.
Und was ich immer wieder mit Timer1 und PWM gerne mache, ist den Timer1
PWM Kern mit 64MHz bei Vcc=5V betreibe.
Deshalb hat Timer1 einen 4-Bit Prescaler in TCCR1 CS1[3:0]
So kann man einen sehr viel hören PWM-Frequenz erhalten.
z.B. fpwm = 64MHz/ 256 = 250kHz bei 2⁸ PWM Auflösung.
So kann man den internen Osc auch auf andere Flanken dynamisch
ausrichten, einige tinys laufen mit bis zu 20[Mhz] ca 10[%] der Rest
muss mit 16.5[Mhz] betrieben werden, um sicher die beiden Adern am USB
zu erwischen.
Das der PWM auf Basis 65[Mhz] laufen kann, verstehe ich nicht, dazu
müsste man ja die Oberwellen des Schwingers verwenden :)
Grüße
Karsten
Hi
>Das der PWM auf Basis 65[Mhz] laufen kann, verstehe ich nicht, dazu>müsste man ja die Oberwellen des Schwingers verwenden :)
Nö. Nennt sich PLL. 8Mhz*8=64MHz.
MfG Spess
Danke Spess,
seht ja auch alles wie immer im Datenblatt und ist kein Geheimnis wie
damals die HP41 C* Synthetische Programmierung.
spess53 schrieb:> Hi>>>Das der PWM auf Basis 65[Mhz] laufen kann, verstehe ich nicht, dazu>>müsste man ja die Oberwellen des Schwingers verwenden :)>> Nö. Nennt sich PLL. 8Mhz*8=64MHz.>> MfG Spess
Aber..
Ist es nun die kleinste Groß Rechenanlage die man käuflich erwerben kann
?
Interessant sind wohl auch die geheimen USB-Memory Controler mit
Autodriver Install. Leider alles Produkte die man nicht kaufen kann oder
?
Grüße
K aus B