Forum: Digitale Signalverarbeitung / DSP / Machine Learning Analog-Digital-Converter STK500 Problem


von Michi (Gast)


Lesenswert?

Guten Tag,

ich verzweifle noch. Ich soll ein kleines projekt schreiben mit dem 
STK500, habe mich da für ein Stimmgerät entschieden.

Jetzt ist das Board soweit vorbereitet, aber der ADC liefert nur 
komische Ergebnisse.

Mein Ziel ist es eine Schwingung zu erhalten, bei der ich die 
Nulldurchgänge zählen kann. Also auf die Frequenzen kommen kann.

Anschluss ist PortA Pin 1 und 2

Mein Code:


void init_adc()
{
  //ADC, 8-Bit im Single Conversion Modus

  //Externe Referenzspannung
  ADMUX = (0<<REFS1) | (0<<REFS0) | (1<<ADLAR);

  ADMUX |= (1<<MUX4) | (0<<MUX3) |(0<<MUX2)| (0<<MUX1)| (0<<MUX0);

  //Frquenzteilungsfaktor: 128
  ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);

  //Interrupt aktivieren
  ADCSRA |= (1<<ADIE);

  //Erlauben/aktivieren die Konvertierung
  ADCSRA |= (1<<ADEN);
}

int read_adc()
{

  //unsigned char result;
  int result;

  //Starten die Konvertierung
  ADCSRA |= (1<<ADSC);

  //Warten bis das ADIF Bit gesetzt ist,
  //also die Konvertierung erledigt ist.
  while( (ADCSRA & (1<<ADIF))==0 );


  //Ergebnis auslesen
  result = ADCH;

  //Interrupt Flag löschen
  ADCSRA &= ~(1<<ADIF);

  return result;
}

2te Frage: Wie schließe ich da, mit welchen Abtastzyklen er abtastet? 
Wie errechne ich das? Weil ich muss wissen wieviel er in 1sec liefert?

Ich danke für eure Hilfe

von Michi (Gast)


Lesenswert?

Gut kleines Update:

Ich weiß jetzt das ich den ADCL und den ADCH auslesen muss und 
aufaddieren soll. Das hab ich jetzt auch soweit drin.

Jedoch liefert es mir immer noch komische Ergebnisse. Wie wandele ich 
jetzt das Ergebniss in eine Schwingung um, in der ich Nulldurchläufe 
messen kann?

Und wie würdet ihr ein Stimmgerät  bauen? Code würde helfen.

Mit freundlichen Grüßen

Michi

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
Noch kein Account? Hier anmelden.