analogRead() für AVR-Studio umschreiben??

Hi ihr,
ich will mich etwas in das AVR-Studio und das thema C Programieren einarbeiten. Ich studiere Maschinenbau und da kommt dieses thema leider garnicht vor und mich interessiert das abre sehr!

Jetzt wollte ich eine Abwandlung des Qtouch programieren. Also die bekannte Kondensator-Wiederstandschaltung und dann die Analogwerte auslesen an den ADC Pins. Auf der Arduino-Sprache ist das ja kein Problem einfach "analogRead()" und ich bekomme einen integer zurück oder ein byte je nach deklaration.

Jetzt würde ich diese Technik aber gerne auf das AVR-Studio in C übertragen oder C++ um das spätere kompilieren auf den ATTiny zu vereinfachen, da ich mit dem Arduino Probleme hatte den ATTiny sauber zu flashen da man mit Arduino ja keinen Fuses setzen kann bzw nur umständlich... Und nach einem längeren Gespräch mit einem Bekannten habe ich jetzt das Arduino Board gegen einen "AVR ISP MK2" getauscht.

Jetzt ist das Problem dass ich die passenden Tutorials nicht ganz checke... Da ich ja ein sehr naiver Neueinsteiger bin^^
das hier z.b. hat ja mit der Thematik zu tun aber naja... is mir "noch!!!" zu hoch^^

Jetzt die Frage an euch....
Weiß einer wie ich am einfachsten einen Analogen Pin auslesen kann um mit der entsprechenden Auflösung (beim ATTiny 84 glaube ich mit 10bit) einen entsprechenden int wert zu bekommen den ich dann auf Änderungen untersuchen kann und bei großen Änderungen die entsprechenden Aktionen ausführen kann?

Denke den rest bekomme ich soweit selbst hergeleitet mit dem Tutorial hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe#Messen_eines_Widerstandes

Danke schonmal! =)

Funst das so?

Hab ich mir zusammengeschustert aus 2 Links^^

uint16_t readADC(uint8_t channel) {

  • uint8_t i;*

  • uint16_t result = 0;*

  • // ADEN wird 1 gesetzt = ADC aktivieren*

  • // ADPS2 = 1 und ADPS1 = 1 beduetet:*

  • // Teilungsfaktor ist = 64*

  • // Quelle: AVR-GCC-Tutorial/Analoge Ein- und Ausgabe – Mikrocontroller.net*

  • ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);*

  • // ADMUX wählt den zu messenden Kanal*

  • // "channel" des Multiplexers waehlen*

  • // REFS1 = 1 und REGS0 = 1 Interne Referenzspannung verwenden (also 2,56 V)*

  • // REFS1 = 0 und REGS0 = 0 Externe Regerenzspannung verwenden ()*

  • ADMUX = channel | (1<<REFS1) | (1<<REFS0);*

  • // ADCSRA initialisiert den ADC und definiert dessen Funktion*

  • // Den ADC initialisieren und einen sog. Dummyreadout machen*

  • // ADSC bleibt solange 1 bist die Konvertierung abgeschlossen ist*

  • ADCSRA |= (1<<ADSC);*

  • while(ADCSRA & (1<<ADSC));*

  • // Jetzt 3x die analoge Spannung and Kanal channel auslesen*

  • // und dann Durchschnittswert ausrechnen.*

  • for(i=0; i<3; i++) {*

  • // Eine Wandlung*

  • ADCSRA |= (1<<ADSC);*

  • // Auf Ergebnis warten...*

  • while(ADCSRA & (1<<ADSC));*

  • result += ADCW;*

  • }*

  • // ADC wieder deaktivieren*

  • ADCSRA &= ~(1<<ADEN);*

  • result /= 3;*

  • return result;*
    }

Du entfernst dich mit deiner Hardware und deiner Software immer weiter vom Arduino. Meinst du, dass deine Fragen dann in einem reinen Arduino-Forum gut aufgehoben sind? Was spricht denn dagegen, alles im "hauseigenen" System zu machen?