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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.