Forum: Mikrocontroller und Digitale Elektronik PortA Atmega32 als ADC und IO Port gleichzeitig verwenden


von mega32 (Gast)


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

von holger (Gast)


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.

von Thomas E. (thomase)


Lesenswert?

holger schrieb:
> Das liegt an deinem Programm.

Vielleicht liegt es auch nicht daran.

mfg.

von Amateur (Gast)


Lesenswert?

Ich nehme an, dass sich in Zeile 42, Deines Programmes, der Fehler 
eingeschlichen hat;)

von Karl H. (kbuchegg)


Lesenswert?

Amateur schrieb:
> Ich nehme an, dass sich in Zeile 42, Deines Programmes, der Fehler
> eingeschlichen hat;)

Vielleicht liegt es aber auch nicht an dieser Zeile.

mfg

(could not resist)

: Bearbeitet durch User
von Michael K. (Gast)


Lesenswert?

mega32 schrieb:
> paar Nanosekunden

Es (das mega32) hat ein wirklich gutes Oszi...

Ob es auch einen Debugger bedienen kann ?
(oder  Strg + C /  Strg + V)

Sagt ein Widerstand zum anderen ...
> (could not resist)

von mega32 (Gast)


Lesenswert?

Wie muss man eigentlich Fragen um hier keine dummen Antworten zu 
kriegen?

von Karl H. (kbuchegg)


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?

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

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

Liefere mehr Details. Sonst muss man ja raten.
Je mehr Details umso besser.

von Michael K. (Gast)


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.

von mega32 (Gast)


Lesenswert?

Naja wenn ich einen Ansatz hätte würde ich nicht Fragen sondern selbst 
suchen.. Die Frage zielt natürlich darauf ab ob es daran liegen könnte 
dass ich den port gemixt betreibe..

von holger (Gast)


Lesenswert?

>Die Frage zielt natürlich darauf ab ob es daran liegen könnte
>dass ich den port gemixt betreibe.

Das geht problemlos wenn das Programm korrekt ist;)

von mega32 (Gast)


Lesenswert?

Danke! Frage beantwortet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

(zitiert aus Datenblatt ATMega32 02/11, Seite 209)

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

mega32 schrieb:
> dass ich den port gemixt betreibe

Das machen viele andere auch und haben keine Probleme damit.

Stell dein Programm hier rein (und zwar das ganze und nicht cryptische 
Auszüge). Ansonsten: Der Fehler liegt in 90% der Fälle zwischen Tastatur 
und Sitzfläche.

von holger (Gast)


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.

von mega32 (Gast)


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
}

von Karl H. (kbuchegg)


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.

von mega32 (Gast)


Lesenswert?

Asche auf mein Haupt..  Mit break; Anweisung funktioniert auch Case16.

von holger (Gast)


Lesenswert?

>Asche auf mein Haupt..  Mit break; Anweisung funktioniert auch Case16.

Dann war die erste Antwort ja die richtige;)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Karl Heinz schrieb:
> Bei dieser Empfehlung geht es doch darum, dass das ADC Messergebnis
> durch die Schaltvorgänge unter Umständen beeinflusst wird.

So isses. Da der TE von einigen Nanosekunden redet, kann das durchaus so 
ein 'Noise' sein.

: Bearbeitet durch User
von Markus H. (haniham) Benutzerseite


Lesenswert?

Eventuell Kapazitive Übertragung von dem knallhart auf 0 geschalteten 
Pin zu den anderen Hochohmigen Eingangspins.

Die Portpins werden intern wohl irgendwo nah beienander geführt werden 
müssen

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.