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?
Naja, ich messe mit dem ADC an einem Poti die Spannung und lasse dann der Messung entsprechend an einem anderen PIN eine Spannung anlegen.
eclipse schrieb: > woran könnte das liegen? Alle Achtung, soviel Informationsgeiz ist schwer zu toppen.
Won K. schrieb: > eclipse schrieb: >> woran könnte das liegen? > > JTAG-Fuse? Ich habe den JTAG disabled mittels .. MCUCSR |=1<<JTD; MCUCSR |=1<<JTD; ..
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?
eclipse schrieb: > woran könnte das liegen? Du hast einen Typo in main.c Zeile 42. Alternativ beim Compilieren die Option -DENABLE_CLAIRVOYANCE_MODE ergänzen; dann geht's.
eclipse schrieb: > wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung von portc7 > auf von 5V auf 0.2V runter... wie kommt das zustande? Hast du doch genau so beschrieben: eclipse schrieb: > if(0){ > PORTC|=1<<7; > } > else{ > PORTD=0; > PORTC=0; > } Welches Verhalten würdest du hier sonst erwarten?
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.
if(0)... else ... Bewerb Dich mal bei ner Rätselecke.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.