PortA Atmega32 als ADC und IO Port gleichzeitig verwenden

Gast #3925660
Lesenswert?

Hallo zusammen,

Ich versuche derzeit den PortA eines Atmega32 gemischt zu betreiben. An 
PA7 bis PA4 schalte ich über verschiedene Bitkombinationen einen 
Multiplexerbaustein. Den analogen Ausgang dieses Multiplexers werte ich 
auf PA0 aus. Alles funktioniert soweit gut, außer wenn ich PortA 
komplett Low setze also 0b00000000. Dann werden die Ausgänge für ein 
paar Nanosekunden kurzzeitig low geschaltet und wechseln anschließend 
automatisch wieder auf High..

Vielleicht hat jemand eine Idee woran das liegen konnte, solange 
mindestens ein Highsignal auf dem Port liegt funktioniert alles 
einwandfrei.

Vielen Dank im voraus
Gast #3925678
Lesenswert?

> außer wenn ich PortA
>komplett Low setze also 0b00000000. Dann werden die Ausgänge für ein
>paar Nanosekunden kurzzeitig low geschaltet und wechseln anschließend
>automatisch wieder auf High..
>
>Vielleicht hat jemand eine Idee woran das liegen konnte,

Das liegt an deinem Programm.
#3925718
Lesenswert?

mega32 schrieb:
> Wie muss man eigentlich Fragen um hier keine dummen Antworten zu
> kriegen?


Mit vernünftigen Angaben.

Sollen wir Hellsehen, was bei dir das Problem sein könnte?
Im Zweifelsfall gehört da praktisch immer das Programm mit dazu.
Falls es sich wirklich mal um den unwahrscheinlichen Fall handelt, dass 
es sich wirklich um einen bekannten Hardwarefehler im µC handelt, dann 
hat man halt ein paar Bytes zuviel raufgeladen. Aber der Fall kommt 
praktisch nie vor.

In der Praxis ist es meistens eine gute Idee, von der Annahme 
auszugehen, dass man selbst irgendwo einen Fehler gemacht hat. Nur: wie 
soll das irgendwer verifizieren?
Gast #3925722
Lesenswert?

mega32 schrieb:
> Wie muss man eigentlich Fragen um hier keine dummen Antworten zu
> kriegen?

Oh sorry, das habe ich wohl missverstanden.
Die Frage war so lächerlich unmöglich zu beantworten mit Deinen Angaben 
das ich mich nicht getraut habe das Niveau zu weit anzuheben.
Gast #3925760
Lesenswert?

>> 4. If any ADC port pins are used as digital outputs, it is essential that
>> these do not switch while a conversion is in progress.

Das ist eine Empfehlung und kein muss.
Eine Erklärung warum seine Portpins da mit einmal
den Zustand ändern ist es auch nicht.
Gast #3925764
Lesenswert?

Matthias Sch. schrieb:
> Wie wärs mit RTFM?
>> 4. If any ADC port pins are used as digital outputs, it is essential that
>> these do not switch while a conversion is in progress.

Das kann ich ausschließen, habe den Code zum auslesen aus dem AVRGcc 
Tutorial kopiert, aus der Funktion komme ich erst heraus wenn die 
Konvertierung abgeschlossen ist.

/* ADC Einzelmessung */
uint16_t ADC_Read( uint8_t channel )
{
  // Kanal waehlen, ohne andere Bits zu beeinflußen
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
  ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
  while (ADCSRA & (1<<ADSC) ) {   // auf Abschluss der Konvertierung 
warten
  }
  return ADCW;                    // ADC auslesen und zurückgeben
}
#3925766
Lesenswert?

>>> 4. If any ADC port pins are used as digital outputs, it is essential that
>>> these do not switch while a conversion is in progress.
>

Korrigier mich, wenn ich falsch liege.
Bei dieser Empfehlung geht es doch darum, dass das ADC Messergebnis 
durch die Schaltvorgänge unter Umständen beeinflusst wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren