Guten morgen, also ich habe da so meine Probleme mit dem Verständnis der mikrocontroller. Ich befasse mich zur zeit mit dem Atmega16 am Stk500 Board. Nun wollte ich eine feste AnalogSpannung an einem PORTA ausgeben lassen. Wie soll das gehen wenn ich doch nur Werte von 1 und Null zuweisen kann? Ich müsste doch irgendwie Werte zwischen 0 und 255 an einen einzigen port senden, den der Mikrocontroller dann als AnalogSpannung zwischen 0-5 Volt ausgibt. Ich blicke da nicht so ganz durch. Das Tutorial enthält leider auch kein Beispiel dazu. Vielleicht könnt ihr eure Codes posten?
Hallo, Du verwechselst da was: der ADC ist ein Analog-Digital-Converter, Du gibst also eine analoge Spannung zwischen 0...5V (als Beispiel!) in den Pin rein und bekommst einen Wert zwischen 0 und 1023 vom ADC geliefert. Was Du meinst, wäre ein DAC, Digtal-Analog-Converter, sowas hat ein AVR nicht eingebaut. Du kannst eine digtal-Analog-Wandlung beim AVR mit etwas Zusatzaufwand per PWM erreichen, wenn Du sowas brauchst, such mal unter PWM nach. Gruß aus Berlin Michael
Du verwechselst einen ADC (Analog --> Digital) mit einem DAC (Digital --> Analog). Der ATMega16 hat nur einen ADC, und der macht aus einem am Pin anliegenden Analogwert einen digitalen Wert. Einen einfachen DAC, mit dem man analoge Spannungen ausgeben kann, kann man mit einer Pulsweitenmodulation (PWM) mit einem der Timer realisieren. Oder bei gehobenen Ansprüchen einen externen DAC benutzen.
Also ich will einfach einen Pin als Ausgang definieren und einen wert ausgeben lassen, der sich nicht ändert, z. B. 3V. Wie teile ich es dem Mikrocontroller denn mit? Ich kann ja schlecht schreiben PORTD=3V wobei hier das nächste Problem anfängt. PORTD sind 8 pins und nicht einer.
Hi Die einzigen AVR mit DAC sind die AT90PWM...-Typen. Mit allen anderen kannst du keine Analogspannung direkt ausgeben. Mögliche Wege sind: PWM, externer DAC oder R2R-Netzwerk. MfG Spess
Das geht so einfach nicht! Bei einem Analog-Digital-Converter must du einen Analogen Wert eingeben und du bekommst das Digitale Signal. Soetwas hat ein Atmega16 Eingebaut. Bei einem Digital-Analog-Converter giebst du Digital ein und Bekommst ein Analogen Signal herraus. Soetwas hat kein Atmega!!!!! Ein µC kann nur 5V oder 0V ausgeben!!! MfG Bauteiltöter
Dankeschön , das hift mir weiter. Aber mit dem PWM habe ich das nicht hinbekommen, sitze schon zwei Tage dran! Oder ich kann es schlecht überprüfen? Wiekann ich denn messen ob was am PWM ausgegeben wird? Bin im Besitz eines 10MHz Oszis und Multimeter. Das Multimeter zeigt immer Spannungsschwankungen an aber keine feste Spannung. Bei der K8055 kann ich doch auch einen festen Wert messen an dem PWM ausgängen, wenn ich mit der Software die Werte einstelle. z.B. entspricht der eingestellte wert 127 ca. 2,5V.
Hi
>Wiekann ich denn messen ob was am PWM ausgegeben wird?...
Oszi an das PWM-Pin und Kurve ansehen. Es sollte ein Rechteck mit
einstellbaren Tastverhältnis zu sehen sein. Die Analogspannung bekommst
du, wenn du ein RC-Filter nachschaltest.
MfG Spess
Wie ist der RC Filter dimensioniert? Welche werte sollen R und C haben?
Hallo, mit welcher Frequenz arbeitet denn deine PWM? Danach richtet sich das, ich würde R und C so dimensionieren, dass ich um den Faktor 100 bis 1000 unter der Frequenz lieg, also die Grenzfrequenz = 1/1000 * PWM Frequenz ist.
Juhu, ich habs geschafft, naja fast. Ich kann meine PWM setzen und auf einen festen Wert einstellen im Beispel 128 also ca. 2,5V Aber wieso nur am Ausgang OCR1A, ich möchte PWM an OCR1B ebenfalls realisieren. Hat jemand eine Lösung? Hier mein Code: #include <avr/io.h> #define F_CPU 8000000 int main (void) { DDRD=0b1111111; // PWM Konfig. TCCR1B |= (1<<CS10); // TCCR1A |= (1<<WGM10)|(1<<COM1A1); //PWM 8 Bit OCR1A=128; OCR1B=128; return 0; }
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.