Liste der Anhänge anzeigen (Anzahl: 1)
Da ich vor kurzer Zeit auch noch ziemlicher Anfänger war was Microcontroller betrifft finde ich diesen Thread sehr gut. Ich will einfach mal nen Stück Quelltext anhängen. Das ist sozusagen eine kleine
ADconverting Bibliothek die nur aus #define´s besteht.
Gruß Muraad
Code:
#include <io.h>
#define ADCinit ADCSRA|=_BV(ADEN) // Teilt dem Board mit das der jeweilige Port für ADC verwendet wird
#define ADCdisable ADCSRA &=~_BV(ADEN) // machs das vorherige wieder rückgänig
#define ADCstart ADCSRA|=_BV(ADSC) // startet eine konvertierung auf dem gewünschten Kannal/Pin
#define ADCfree ADCSRA|=_BV(ADATE) // schaltet den freilaufenden Modus ein
#define ADCvintern ADMUX=_BV(REFS1) |_BV(REFS0) // interne Spannungsversorgung
#define ADCprescaler_2 ADCSRA |=_BV(ADPS0) // gewünschter Teilungsfaktor/Prescaler
#define ADCprescaler_4 ADCSRA|=_BV(ADPS1)
#define ADCprescaler_8 ADCSRA=_BV(ADPS1) | _BV(ADPS0)
#define ADCprescaler_16 ADCSRA|=_BV(ADPS2)
#define ADCprescaler_32 ADCSRA=_BV(ADPS2) | _BV(ADPS0)
#define ADCprescaler_64 ADCSRA=_BV(ADPS2) | _BV(ADPS1)
#define ADCprescaler_128 ADCSRA=_BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0)
#define ADCchannel_1 //gewünschter Kannal z.B bei ATmega32 PINA0 - PINA7
#define ADCchannel_2 ADMUX|=_BV(MUX0) // bei nicht freilaufen muss ADCchannel_x vor
#define ADCchannel_3 ADMUX|=_BV(MUX1) // ADCstart kommen dann kann man mit getadc() der
#define ADCchannel_4 ADMUX= _BV(MUX1) | _BV(MUX0) // Adcwert des gewählten Kannals auslesen
#define ADCchannel_5 ADMUX|=_BV(MUX2)
#define ADCchannel_6 ADMUX= _BV(MUX2) | _BV(MUX0)
#define ADCchannel_7 ADMUX= _BV(MUX2) | _BV(MUX1)
#define ADCchannel_8 ADMUX= _BV(MUX2) | _BV(MUX1) | _BV(MUX0)
inline unsigned int getadc(void)
{
while (ADCSRA & _BV(ADSC)) {}
return ADC;
}
Liste der Anhänge anzeigen (Anzahl: 1)
Hab jetzt in meiner kleinen Bibliothek den ADconverting Teil bisschen überarbeitet und einen Teil zur PWM Ausgabe mit Timer2(16Bit Timer) geschrieben. Ich habe das ganze jetzt in ein Rar Archiv gepackt und zwei Beispielprogramme hinzugefügt. Ach meine Bibliothek bezieht sich auf den ATmega32, um ihn für andere Atmels umzuschreiben muss man theoretisch aber höchsten ein paar Registernamen oder Bitname ändern.
Gruß Muraad