Hallo zusammen. In der µP-Programmierung bin ich ein absoluter Frischling. Ich habe bisher nur mit Delphi und C# gearbeitet. Nun hat mich mein Chef beauftragt diesen Xmega32A4U zu programmieren und ich bin echt ratlos, da es hierzu sehr wenige Tutorials gibt. Folgende Aufgabe habe ich zu bewältigen: - Analogsignal einlesen (Dazu hab ich schon was gefunden) - Filtern und aufarbeiten (das bekäme ich auch noch hin) - Analogsignal wieder ausgeben Das Eingangssignal (0-2V) bekomme ich schon mit 12 Bit rein. Wie muss ich jedoch den Ausgang initialisieren, in welchem Größenbereich muss mein Zahlenwert liegen um welche Spannung raus zu bekommen und guterletzt wie setze ich den Ausgang dann? Vielen Dank im Voraus Jens
Port A Pin 0 nutze ich zum Einlesen der Spannung.
1 | // ADC initialisieren
|
2 | PORTA_PIN0CTRL |= PORT_ISC_INPUT_DISABLE_gc; |
3 | |
4 | ADCA_CTRLA = ADC_ENABLE_bm; |
5 | |
6 | ADCA_REFCTRL |= ADC_REFSEL_VCC_gc; |
7 | ADCA_CTRLB = ADC_RESOLUTION_12BIT_gc; |
8 | ADCA_PRESCALER = ADC_PRESCALER_DIV128_gc; |
9 | |
10 | // Configuring channel 0
|
11 | ADCA_CH0_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc; |
12 | ADCA_CH0_MUXCTRL |= ADC_CH_MUXPOS_PIN0_gc; |
13 | |
14 | ADCA_CH0_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc; |
15 | ADCA_CH0_MUXCTRL = ADC_CH_MUXPOS_PIN0_gc; |
16 | |
17 | ADCA_CTRLA = ADC_ENABLE_bm; |
18 | |
19 | uint16_t t; |
20 | |
21 | while(1){ |
22 | // Analog einlesen
|
23 | ADCA_INTFLAGS = ADC_CH0IF_bm; |
24 | ADCA_CH0_CTRL |= ADC_CH_START_bm; |
25 | while(!(ADCA_INTFLAGS & ADC_CH0IF_bm)); |
26 | t = ADCA_CH0RES; |
27 | }
|
Wenn evtl. noch jemand weiß wie man das differential einliest und an welchen Pins, wäre ich auch sehr dankbar. Jens
Lad dir das Atmel Studio mit ASF... da sind High Level Funktionen wie bei fast jedem Cortex M3/M4 dabei... und viel wichtiger: viel Beispielquellcode... Grüße Basti
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.