Forum: Mikrocontroller und Digitale Elektronik Atmega2560 16 ADCs als Interrups "einsammeln"


von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

hab ein Problem.

Will alle ADCs im Interrupt auslesen lassen und in ein Array Speichern 
lassen.
Dieses Funktioniert aber nicht. die ersten 0-7 ADC Werte stimmt aber die 
von PortK also 7-15 funktionieren nicht.

Weiß einer woran es liegt?
Code dürfte im Anhang sein.

Schonmal danke!

von Thomas E. (thomase)


Lesenswert?

Peter schrieb:
> Weiß einer woran es liegt?
> Code dürfte im Anhang sein.

>> if (channel>>7)

Da hast du bestimmt schon 20 mal draufgeguckt. Bäume, Wald und so.

mfg.

von Peter (Gast)


Lesenswert?

Sorry steh ich gerade so auf dem Schlauch? Hab gerade schon
if (channel>=7)
draus gemacht und auch

  if (channel >= 16)
  {
    channel = 0;
  }

und es funktioniert immer noch nicht.

von Thomas E. (thomase)


Lesenswert?

Peter schrieb:
> if (channel>=7)
> draus gemacht und auch
>
>   if (channel >= 16)
>   {
>     channel = 0;
>   }
1
if(channel > 7)
2
.
3
.
4
if(channel > 15) channel = 0;

Das passt besser.

mfg.

von Peter (Gast)


Lesenswert?

Also ich weiß noch nicht wieso aber es geht von dem Port nur Bit 1

von Thomas E. (thomase)


Lesenswert?

>> ADMUX |=(1<<REFS0)+(0b00000111&&channel);
         ^^                      ^^
1
ADMUX =(1<<REFS0)+(0b00000111&channel);
2
      ^                      ^

= und bitweise verknüpfen!

Bei dir steht ausgerechnet: ADMUX |=(1<<REFS0)+1;
Ausser bei channel == 0. Aber da du das veroderst, bleibt die 1 hinten 
ewig stehen.

mfg.

von Peter (Gast)


Lesenswert?

Super Danke. Funktioniert jetzt alles.

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.