PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Schon Gut] MEGA32 ADC2 und 3 auslesen?



Christian3
17.06.2009, 16:54
Hallo,
ich denke mal das is für euch profis kein prob.
ich will die werte vom ADC2 und ADC 3 auslesen und auf meine LCD display wieder geben könnt ihr mit helfen?
wäre euch echt dank bar
---------------------------------
******korigire***********
Mein LCD is grade duch geraucht warum auch immer :x 30 € im ars** :x
was solls
meine Neu Frage ist :
Könnt ihr mir helfen das er bei einen mess wert von 0.2 V LED1 vom MEGA32 anmacht (messwert vom ADC3)

LG
Christian

Dirk
18.06.2009, 18:45
Hallo Christian,

es gibt das Demo Programm "RP6Control_05_IO_ADC.c", das gut zeigt, wie ADCs der M32-Karte ausgelesen und die Werte angezeigt werden.
Wenn du unter/über 0,2 Volt irgend etwas (z.B. eine LED) schalten willst, mußt du den ADC-Wert mit 41 vergleichen.

Gruß Dirk

P.S.: Selbst ist der Mann! O:)

Christian3
18.06.2009, 18:48
ok thx für den tipp
ich hab jetzt volgenes:


#include "RP6ControlLib.h"

int main(void)
{
initRP6Control();
sound(225,142,44);
sound(125,70,20);
mSleep(400);
setLEDs(0b0000);




DDRA &= ~ADC3;
DDRA &= ~ADC2;

while(true) {
writeString_P("\nADC3: ");
uint16_t adc3 = readADC(ADC_3); // Read ADC Channel 3
writeInteger(adc3, DEC);
writeString(" | ADC2: ");
uint16_t adc2 = readADC(ADC_2); // Read ADC Channel 2
writeInteger(adc2, DEC);
writeChar('\n');
mSleep(500);
}
return 0;
}

so mein prob is volgenes ich weiß nicht wie ich z.b beim es schaffe das wenn ADC2 beim wert 0bis 10 eine led anmacht und beim wert
300 bis 350 2 leds anmacht und bei 600bis 650 4 leds anmacht sry aber ich weiß es wirklich nicht

Dirk
19.06.2009, 17:14
Hallo Christian,

tu mal Folgendes in deine Schleife zwischen writeChar('\n') und mSleep(500) :

if (adc2 <= 10) {
externalPort.LED1 = true;
}

if ((adc2 >= 300) && (adc2 <= 350)) {
externalPort.LED1 = true;
externalPort.LED2 = true;
}

if ((adc2 >= 600) && (adc2 <= 650)) {
externalPort.LED1 = true;
externalPort.LED2 = true;
externalPort.LED3 = true;
externalPort.LED4 = true;
}

if (((adc2 > 10) && (adc2 < 300))
|| ((adc2 > 350) && (adc2 < 600))
|| (adc2 > 650)) {
externalPort.LED1 = false;
externalPort.LED2 = false;
externalPort.LED3 = false;
externalPort.LED4 = false;
}
outputExt();

Nicht getestet!

Gruß Dirk