Ansteuerung des UART
Da es die Codestücke insgesamt schon ein bisschen länger geworden sind wurden sie jetzt auf eine eigene Seite ausgelagert: Ansteuerung des UART.
Analog/Digital-Wandler
#include <avr/io.h>
#include <stdint.h>
// Analog/Digital Wandler initialisieren
void
adc_init(void)
{
// externe Referenzspannung und AD-Wandlerkanal 0 (ADC0) auswählen
ADMUX = 0;
// AD-Wandler einschalten und Prescaler = 64 einstellen (enstpricht 115 khz Wandlertakt)
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
}
int
main(void)
{
uint16_t buffer;
// A/D - Wandler initialisieren
adc_init();
while (1) {
// Wandlung starten
ADCSRA |= (1<<ADSC);
// Warten bis die AD-Wandlung abgeschloßen ist
while ( !(ADCSRA & (1<<ADIF)) )
;
/* AD-Wert auslesen.
ADCH muss als zweites gelesen werden, da nachdem ADCL gelesen wurde
das ADC-Register gesperrt ist bis ADCH auch ausgelesen wurde. */
buffer = ADCL | (ADCH<<8);
// oder einfacher
buffer = ADC;
}
}
PWM mit Timer1
#include <avr/io.h>
// Timer1 initialisieren
void
timer1_init(void)
{
// normale 8-bit PWM aktivieren (nicht invertiert),
// Das Bit WGM10 wird im Datenblatt auch als PWM10 bezeichnet
TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
// Einstellen der PWM-Frequenz auf 14 kHz (Prescaler = 1)
TCCR1B = (1<<CS10);
// Interrupts für Timer1 deaktivieren
// Achtung: Auch die Interrupts für die anderen Timer stehen in diesem Register
TIMSK &= ~0x3c;
}
int
main(void)
{
// Timer1 initialisieren
timer1_init();
// Werte für die beiden PWM Kanäle setzen.
// Zum Beispiel 100% Tastverhältnis für OC1A
OCR1AL = 0xff;
// und ca. 50% Tastverhältnis (= 127/255) für OC1B
OCR1BL = 127;
while (1) {
// do nothing
}
}
Zum Anfang
Kommentare
# Thomas meinte am 30. Dezember 2006, 19:52 dazu:
Hallo,
Ich finde deine Seiten Super. Das neue Design ist auch gut. Ich benutze oft deine Seiten. Doch dieser Artikel sollte etwas überarbeitet werden. Denn Codeschnipsel sind nur sinnvoll wenn ich mir damit Zeit ersparen kann. Doch hier muss ich doch wieder alles über den Timer lesen. Also bitte OCR1AL = 0xff; OCR1BL = 0x7f; genauer beschreiben.
Grüße Thomas
# Tristan Seifert meinte am 15. September 2008, 20:50 dazu:
Hallo,
Diese Seiten waren meine letzte Rettung bei meinem C-Programm!!! Ich bin ja noch recht neu auf dem Gebiet »C«
Deine Meinung: