Spannung am ATmega32-Output unterschieldich

Gast #4274351
Lesenswert?

Ich spiele gerade mit dem ADC rum und lasse ganz easy ein paar LEDs 
leuchten. Dabei passiert ständig was mir unverständliches:

Ich mache PORTC6 als OUTPUT, messe dort die Spannung und sie beträgt 5V.

Wenn ich mit dieser Null-Zeile mein Code ergänze:
//--
if(0)
    PORTC|=1<<7;
//--
dann messe ich an PORTC6 nur noch eine Spannung von 0,02V...

woran könnte das liegen?
Gast #4274584
Lesenswert?

Peter D. schrieb:
> eclipse schrieb:
>> woran könnte das liegen?
>
> Alle Achtung, soviel Informationsgeiz ist schwer zu toppen.

Schaltung:

VCC----------------
______          |
--------|         |
--------|         |
atmega32|         |
ADC4----|-------|POTI|----GND
-----PC7|---LED-----------GND
-----PC6|---LED-----------GND
usw..   |---LED-----------GND
bis PC0 |---LED-----------GND
-----PD7|---LED-----------GND
______

mit dem Code:
//step ist als zahl 3 definiert
MCUCSR |=1<<JTD;
  MCUCSR |=1<<JTD;
  DDRC=0xFF;
  DDRD=1<<7;
  ADMUX |=(1<<REFS0)|(1<<MUX2);
  ADCSRA|=(1<<ADEN)|(1<<ADPS2);

  while(1){
    ADMUX|=(1<<MUX2);
    ADCSRA|=(1<<ADSC);
    while(ADCSRA&(1<<ADSC));

    //-----------------------
    if(ADC>=512 && ADC<512+step){
      PORTD|=1<<7;
    }
    if(ADC>=512+step && ADC<512+2*step){
      PORTC|=1<<0;
    }
    if(ADC>=512+2*step && ADC<512+3*step){
      PORTC|=1<<1;
    }
    if(ADC>=512+3*step && ADC<512+4*step){
      PORTC|=1<<2;
    }
    if(ADC>=512+4*step && ADC<512+5*step){
      PORTC|=1<<3;
    }
    if(ADC>=512+5*step && ADC<512+6*step){
      PORTC|=1<<4;
    }
    if(ADC>=512+6*step && ADC<512+7*step){
      PORTC|=1<<5;
    }
    if(ADC>=512+7*step && ADC<512+8*step){
      PORTC|=1<<6;
    }
    if(0){
      PORTC|=1<<7;
    }
    else{
      PORTD=0;
      PORTC=0;
    }
    }
}


zurück zur Frage:

wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung von portc7 
auf von 5V auf 0.2V runter... wie kommt das zustande?
Gast #4274597
Lesenswert?

Wegen dem hier:
1
      PORTC=0;

Nimm es mir bitte nicht übel, aber die Kombination von unzureichender 
Information, in Salamischeiben serviert und im Ergebnis auf mangelnde 
C-Kenntnis zurückzuführen, ist unangenehm für die Leser und Antworter.
Gast #4276019
Lesenswert?

Toni Tester schrieb:

> Welches Verhalten würdest du hier sonst erwarten?

Dankesehr, ich hab diese if-abfrage eingefügt und habe nicht beachtet, 
dass mein else dahinter steht! Hätte halt dann aber erwartet, dass ich 
0V an den PINS kriege, wohl wahrscheinlich die 0,2 wegen dem  ständigen 
Ein-und-Ausschalten!

 Peter Dannegger schrieb:
> Bewerb Dich mal bei ner Rätselecke.

Ich stelle meine Fragen beim nächsten Mal auch ordentlicher, das seh ich 
ja ein ;)

Dankeschön

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