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
Karsten S. schrieb: > 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; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 1000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Disconnected // Timer Period: 0,51 ms // Output Pulse(s): // OC0A Period: 0,51 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00;
Vielleicht zur Begrifflichkeit eine Klarstellung: einen "Analogausgang an PB1" hat eine attiny85 nicht!
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.
PB1 ist ja auch nicht drin (OCR0B). Musst halt einen Wert nach OCR0A schreiben. Ausserdem muss natürlich DDRB.0 gesetzt sein.
Hallo Joachim, Mittels : [cpp] TCCR0A = 3<<COM0A0 | 3<<COM0B0 | 3<<WGM00; TCCR0B = 0<<WGM02 | 3<<CS00; GTCCR = 1<<PWM1B | 0<<COM0B0; TCCR1 = 3<<COM1A0 | 7<<CS10; [/cpp] OCR0B = MeinWert; Beschreibe ich erfolgreich PB1 Du schlägst vor für PB0 [cpp] TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00); TCNT0=0x00; DDRB = 0; [/cpp] OCR0A=MeinWert; Dabei kommt raus, das PB1 voll ausgeregelt ist, und PB0 nicht angesprochen wird. Als GPIO funktioniert sogar PB0 Habe ich etwas vergessen ? Danke für deine Unterstützung! Gruß aus Berlin Karsten
Das hier funktioniert:
1 | /* init timer to fast PWM Mode
|
2 | * we run with full speed @ 1Mc resulting in a PWM frequency of roughly 4 kHz
|
3 | * keep in mind to initialize PB0 and PB1 for output */
|
4 | void TimersInit(void) { |
5 | // initialize normal pair output
|
6 | TCCR0A = (1 << COM0A1) | (0 << COM0A0) | (1 << COM0B1) | (0 << COM0B0) | (1 << WGM01)| (1 << WGM00); |
7 | TCNT0 = 0; |
8 | TCCR0B = (0 << CS01) | (1 << CS00); |
9 | // makes sure outputs are off
|
10 | OCR0A = 0; |
11 | OCR0B = 0; |
12 | }
|
:
Bearbeitet durch User
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 |
7 | (0 << MUX3) | // use ADC1 for input (PB2), MUX bit 3 |
8 | (0 << MUX2) | // use ADC1 for input (PB2), MUX bit 2 |
9 | (0 << MUX1) | // use ADC1 for input (PB2), MUX bit 1 |
10 | (1 << MUX0); // use ADC1 for input (PB2), MUX bit 0 |
11 | |
12 | ADCSRA = |
13 | (1 << ADEN) | // Enable ADC |
14 | (1 << ADPS2) | // set prescaler to 128, bit 2 |
15 | (1 << ADPS1) | // set prescaler to 128, bit 1 |
16 | (1 << ADPS0); // set prescaler to 128, bit 0 |
Danke für Hinweise.. Irgendwas ist faul :)
Karsten S. schrieb: > Aber das funktioniert nicht. Möglicherweise liegt's ja daran, dass du alle Timer mit PWM auf die (alle) Ausgänge schaltest.
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.
Lösung:
1 | //PB1
|
2 | TCCR0A = 3<<COM0B0 | 3<<WGM00; |
3 | TCCR0B = 0<<WGM02 | 1<<CS00; |
4 | //OCR0B=MeineVal(0-255)
|
5 | |
6 | //PB0
|
7 | TCCR0A = 3<< COM0A0 | 3<<WGM00; |
8 | TCCR0B = 0<<WGM02 | 1<<CS00; |
9 | //OCR0A=MeineVal(0-255)
|
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.
Okay es geht auch mit beiden gleichzeitig:
1 | //PB1 & PB0
|
2 | TCCR0A = 3<<COM0A0 |3<<COM0B0 | 3<<WGM00; |
3 | TCCR0B = 0<<WGM02 | 1<<CS00; |
4 | |
5 | //für PB1 OCR0B = 0-255;
|
6 | //für PB0 OCR0A = 0-255;
|
Danke nochmal. K.
Der Tiny85, sowie jeder Tiny oder Mega, haben KEIN DAC sie können KEIN Analogsignal ausgeben! Weder an PB0, PB1 noch an sonst einem Pin!
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.
Karsten S. schrieb: > Wo ist das Problem Gast das es nicht Analog ist. Es ist kein DAC. Hänge eine Lautsprecher dran, dann hörst du den Unterschied.
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
Wie bitte ? .. schade eigentlich. Viel Produktives hast Du ja nicht geschrieben außer das alles falsch ist. Erklär doch mal deine Erbostheit.
Karsten S. schrieb: > Aber es reicht um z.b. einer WAGO / BECKHOF Klemme mitzuteilen, das ich > 1V oder 2V oder 5V anlege. Richtig ? Eben nicht! Du kannst deiner Wago / Beckhof Klemme mitteilen ob du 0 oder 5 Volt angelegt hast. Und das halt aber mit 10khz (z.b.). Man kann natürlich einen Low-Pass-Filter bauen... Dann bitte, biiiiittte... lies das und verstehe das auch: http://www.allegromicro.com/en/Design-Center/Technical-Documents/Hall-Effect-Sensor-IC-Publications/Method-for-Converting-a-PWM-Output-to-an-Analog-Output-When-Using-Hall-Effect-Sensor-ICs.aspx
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
Mein lieber Herr Gesangsverein, hier geht ja was ab... So viel Ignoranz habe ich lange nicht gesehen...
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...
:
Bearbeitet durch Moderator
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 | void initDAC(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.
:
Bearbeitet durch Moderator
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.
Sehr gut, so zieht man den Osc auf die maximale Frequenz, hier anhand eines Beispiels aus V-USB
1 | void calibrateOscillator(void) |
2 | {
|
3 | uchar step = 128; |
4 | uchar trialValue = 0, optimumValue; |
5 | int x, optimumDev, targetValue = (unsigned)(1499 * (double)F_CPU / 10.5e6 + 0.5); |
6 | |
7 | do{ |
8 | OSCCAL = trialValue + step; |
9 | x = usbMeasureFrameLength(); /* proportional to current real frequency */ |
10 | if(x < targetValue) /* frequency still too low */ |
11 | trialValue += step; |
12 | step >>= 1; |
13 | }while(step > 0); |
14 | |
15 | optimumValue = trialValue; |
16 | optimumDev = x; /* this is certainly far away from optimum */ |
17 | for(OSCCAL = trialValue - 1; OSCCAL <= trialValue + 1; OSCCAL++) |
18 | {
|
19 | x = usbMeasureFrameLength() - targetValue; |
20 | if(x < 0) |
21 | x = -x; |
22 | |
23 | if(x < optimumDev) |
24 | {
|
25 | optimumDev = x; |
26 | optimumValue = OSCCAL; |
27 | }
|
28 | }
|
29 | OSCCAL = optimumValue; |
30 | }
|
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
Hi spess, ne PLL im tiny.. Ahh: Beitrag "Verständnisfrage: Attiny mit interner PLL als Taktgenerator" Ist der Atiny nicht ein göttlicher Funken ? http://hackaday.com/2012/01/26/sprite_tms-three-component-fm-transmitter/ (doch noch MP3^^) (Mehr Computer braucht man nicht :-)
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
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.