ADC - analog zu digital
AREF
Im ADMUX Register ist es meistens Bit 7 (REFS1) und Bit 6 (REFS0)
00 AREF, Internal VREF turned off
01 AVCC with external capacitor at AREF pin
10 Internal 1.1V o.a. Voltage Reference with external capacitor at AREF pin
11 Internal 2.56V Voltage Reference with external capacitor at AREF pin
beim ATMega16 z.B. ist es etwas anders (10 nicht verwendet)
Meistens stelle ich auf 01, nehme also die Betriebsspannung des Controllers (3,3 oder 5V bei mir) als Referenz.
AREF-Pin mit 100nF an GND
Beispiele:
ADMUX = (1 << REFS0) | ADKanal;
// ADKanal = 0..5, 0..7 oder 0..15
ADMUX |= (1<<REFS1) | (1<<REFS0);
// 2,56V interne Referenz - 2,56V/1024 = Auflösung: 2,5mV
Sonderfall: ATMega32u4
Es gibt 12 ADC aber ADMUX hat andere Einstellungen. ADMUX Bit5 ist gesondert in ADCSRB einzustellen. Das Bit heißt Mux5.
ADCSRB Mux5
ADMUX Mux 4..0
Vorteiler
ADPS 111 = 128 110 = 64 101=32 100=16 011=8 010=4 001=2 000=2
Bei mir meistens Prescaler auf 128:
ADCSRA = (11<<ADEN) | (11<<ADPS2) | (11<<ADPS1) | (11<<ADPS0);
// einschalten und Prescaler auf 128
aber auch 64:
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);
// einschalten und Prescaler auf 64
Auswahl der Eingänge MUX
Im Normalfall geht das der Reihe nach ADMUX |= 0 = Kanal 0 1 = Kanal1 usw.
Beim ATMega 1280 u.ä. sind 16 Kanäle vorhanden.
Im Register ADCSRB befindet sich das Bit MUX5, wenn dieses gesetzt ist, kann man die restlichen Kanäle (8-15) auslesen, wieder mit ADMUX |= 0 für Kanal 8, 1 für Kanal 9 usw.
Schwankende Werte !
Unbedingt 100nF direkt am AVR-Pin gegen Masse setzen !!!! (oder auch 10nF - probieren!)
Empfehlung vom Datenblatt:
Analog Drähte kurz halten !
Über GND Analog gehen !
noise canceler Funktion nutzen !
Wenn analoge Pins digital genutzt werden, sollten diese während der Messung nicht geschaltet werden !
enum
enum
{alt, neu, schade, gleich};
oder in die Variable hinein definieren
enum
Opa {zuHause, unterwegs, Garten, Engelmannhaus};
geht mit 0 los.
Also --- alt = 0, neu = 1 usw. und zuHause = 0, unterwegs = 1 usw.
Programmer - Dongel - Adapter - USB
Laut Datenblatt für gelben und Diamex (3. Bild - dunkel grün) - Programmer:
Zeile
Bild
Dipschalter 1
Dipschalter 2
A
Off = 3,3V
Off = externe Spannung aus
An PIN 2 des 6- und 10-poligen Programmieranschlusses liegt
keine Spannung an. Die Versorgung des angeschlossenen Microcontrollers
muss über eine externe Stromversorgung geschehen.
Bitte unbedingt die externe Spannung an PIN2 anlegen!
Die Höhe der externen Spannung bestimmt den Pegel auf den Programmierleitungen!
Das habe ich nie gemacht. Die Spannung habe ich am Adapter
eingestellt - siehe weiter unten.
B
On = 5V
Off = externe Spannung aus - Siehe A
C
Off = 3,3V
On = externe Spannung ein
Eine externe Schaltung bzw. ein angeschlossener
Controller kann vom AVR-ISP mit Strom versorgt werden.
D
On = 5V
On = externe Spannung ein - Siehe C
Studio 4 - Programming
Ich verwende immer noch Studio4 und nicht die Folgesoftware Studio5, 6 usw..
Der Grund: eine schmale Software, schnell ladend, die für meine Projekte
absolut ausreicht.
1.) Programmer in USB-Slot von Computer einstecken. Auf dem Dongel die Spannung des
Projektes einstellen. Also 3V oder 5V. In allen meinen Objekten wird die Spannung vom
Objekt genutzt, was heißt: Die zu programmierende Schaltung muss eingeschaltet
sein, also Objekt "unter Strom" setzen.
2.) Studio4 starten - dort dann auf Prog - Symbol klicken.
3.) Jetzt öffnet sich ein Menü. Da auf die Karte Main gehen.
Nun den entsprechenden Controller wählen und die Programmierfrequenz (ISP Frequency)einstellen. Es kann
sein, dass beim Kauf eines uC, dieser auf nur 1 MHZ Taktfrequenz gestellt ist. Die Programmierfreauenz sollte
nicht höher als 1/4 der Arbeitsfrequenz des Controllers sein. Also sollte man bei 1MHz
die ISP Frequency auf
115,2kHz stellen.
4.) Die Karte Fuses öffnen.
Hier darf nur ein Häkchen sein und zwar bei SPIEN. Das
Häkchen bei z.B. CKDIV8 raus nehmen.
Dann die Art des Taktgenerators einstellen bei SUT_CKSEL. Wenn wir einen Quarz nutzen,
dann entsprechend einstellen.
Ext. Chrystal Osc.
Ich nehme immer die längste Anfangszeit: z.B.
14 CK + 65 ms
Wenn alles geändert ist auf Program klicken.
Nun können wir die Programmierfrequenz (ISP-Frequency) unter 3.) wieder hoch setzen.
Bei
einem 8MHz Quarz, dann entspr. auf 1.845MHz.
5.) Die Karte Program öffnen.
Im Abschnitt Flash auf die drei Punkte klicken und die entsprechende Datei suchen.
Dann auf Program klicken.
MegaBoard 2560
Robbenspiel Osnabrück, Orgelobjekt Freiberg, Lüfter Multiple
12PWM auf 6 Timer (0..5)
4 Usart
Led auf PB7
Stromverbrauch
Nach dem Kauf verbraucht das Board ca. 55mA.
Es gibr Maßnahmen, den Verbrauch geringfügig zu senken: Man kann Teile des uC abschalten.
ACSR = (1<<ACD);
//Analogcomparator ausschalten
PRR0 |= (1<<PRUSART0) | (1<<PRUSART1) | (1<<PRTWI) | (1<<PRADC);
//USART0 = 0ff, TWI=Off, ADC = Off
PRR1 |= (1<<PRTIM5) | (1<<PRTIM4) | (1<<PRTIM3);
// Timer 5,4 und 3 = Off.
Macht kaum Veränderungen im Stromverbrauch. Man könnte noch Spannugsregler, Power-Led und FT232 auslöten.
uint8_t
uint steht für unsigned integer
Verwendet werden
uint8_t, uint16_t, uint32_t, uint64_t
--- es
geht nicht:
uint24_t
!!!
Um diese Key-words blau zu machen, muss die Datei: AvrStudio_c.ini bearbeitet werden.
1.) Ordner öffnen: Programme (x86) / Atmel / AVR Tools / AVRStudio4 / edit und dort dann die
Datei AvrStudio_c.ini kopieren.
2.) Wo anders speichern, damit wir sie abändern können.
3.) Datei mit einem Text-Editor öffnen und nach unten scrollen, wo die [Keywords] stehen.
4.) Da hinein schreiben: uint8_t = Keyword, uint16_t = Keyword, uint32_t = Keyword, uint64_t = Keyword
Keyword ist weiter oben definiert (blau).
5.) In ... AVRStudio4/edit die Datei AvrStudio_c.ini umbenennen in z.B. AvrStudio_cOld.ini
6.) Unsere veränderte Datei
AvrStudio_c.ini in ... AVRStudio4/edit kopieren.