Hallo, will hier mit einem tiny eine Spannugn messen und diese Spannung als Vref benutzen, wohingegen ich aktiv vref intern messe... Hatte diese Formel noch von damals meiner Versuche..nur verstehe ich sie nicht, das müßte ich aber, um zu raffen welchen Wert ich zur kalibrierung ändern muss.. Kann mir mal einer in Stücken erklähen, wie sich die zusammensetzt? 1024 ist klar, daa das halt der maximale Bereich ist, den der ADC annehmen könnte (in dem Fall Ref annehmen könnte) volt := ((1024 * 10) *10) DIV volt;
leider wird diese Möglichkeit hier gar nicht erwähnt http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC
Bart schrieb: > Hallo, > will hier mit einem tiny eine Spannugn messen und diese Spannung als > Vref benutzen, wohingegen ich aktiv vref intern messe... du meinst die interne Bandgapspannung > volt := ((1024 * 10) *10) DIV volt; Keine Ahnung, wo da die 10 herkommen. Aber das Prinzip ist doch einfach. Die Höhe der Banggap Spannung kennst du, bzw. die hast du mal ausgemessen. Die ist immer gleich und ändert sich nicht. d.h. wenn deine Referenzspannung 5V wäre und du weißt, dass deine Bandgap-Spannung zb 1.36V groß ist, dann müsste der ADC welches Ergebnis bringen, wenn du mit der Referenz die Bandgap vermisst?
1 | 5 ..... 1024 |
2 | 1.36 ..... x |
3 | --------------------- |
4 | 1.36 * 1024 |
5 | x = ------------ = 278 |
6 | 5 |
d.h. du würdest erwarten, dass der ADC einen Wert von 278 raus wirft. Jetzt wirft aber der ADC keine 278 raus, sondern 354. Wie gross war daher die "Referenzspannung"? (einfach die Formel umstellen)
1 | 1.36 * 1024 |
2 | 354 = -------------- |
3 | VRef |
4 | |
5 | 1.36 * 1024 |
6 | VRef = ------------- = 3.93V |
7 | 354 |
Damit also der ADC bei einer zu messenden Spannung von 1.36V ein
Ergebnis von 354 bringt, muss die Referenzspannung (die du eigentlich
feststellen willst) also 3.93V groß gewesen sein.
> leider wird diese Möglichkeit hier gar nicht erwähnt
Weil das eigentlich nicht so schwer ist, das selber drauf zu kommen,
wenn man erst mal überrissen hat, dass es eine Band-Gap Spannung gibt,
deren Höhe bekannt und konstant ist und die man vermessen kann.
Im Tutorial wird nicht alles bis ins kleinste vorgekaut. Ein bischen was
muss man schon selber können
:
Bearbeitet durch User
also mit volt := (1024 * 1.1) / volt; komme ich jetzt auf 0.03?!? offensichtlich liegt da noch ein Fehler woanders :-( Ich nutze keinen Eingang zur Spannungsmessung, da es ja eigentlich VCC sein müßte-richtig? Vref ist mit AMUX zum messen eingestellt... ADMUX.0 := 1; ADMUX.1 := 0; ADMUX.2 := 0; ADMUX.3 := 0; ADMUX.4 := 0; ADMUX.5 := 1; ADMUX.6 :=0; ADMUX.7 :=0; ADCSRA := 199; while ADCSRA.6 = 1 do nop; Lo(result) := ADCL; Hi(result) := ADCH; Aus dem Attiny44 Datenblatt... REFS1 REFS0 Voltage Reference Selection 0 0VCC used as analog reference, disconnected from PA0 (AREF) 0 1 External voltage reference at PA0 (AREF) pin, internal reference turned off 1 0 Internal 1.1V voltage reference 1 1 Reserved Table 16-4. Single-Ended Input channel Selections. Single Ended Input MUX5:0 ADC0 (PA0) 000000 ADC1 (PA1) 000001 ADC2 (PA2) 000010 ADC3 (PA3) 000011 ADC4 (PA4) 000100 ADC5 (PA5) 000101 ADC6 (PA6) 000110 ADC7 (PA7) 000111 Reserved for differential channels(1) 001000 - 011111 0V (AGND) 100000 1.1V (I Ref)(2) 100001 ADC8(3) 100010 Reserved for offset calibration(4) 100011 - 100111
irgendwie messe ich außen am VREF PIn aber auch nur 0V Auch wenn ich die serienmäßge ADC Routine verwende und DDRA als Eingang habe und PortA auf 0 also kein Pull up...hmm
Bart schrieb: > irgendwie messe ich außen am VREF PIn aber auch nur 0V Was, genau, willst du eigentlich machen? Die Sache mit der BandGap Vermessung macht man, wenn man die Versorungsspannung des µC vermessen möchte. Dann nimmt man die Versorgungsspannung als Referenzspannung und lässt die bekannte BandGap Spannung vermessen. Aus dem Ergebnis kann man zurückrechnen, wie hoch die Referenzspannung und damit die Versorungsspannung war. Wenn du das nicht willst (die Versorgungsspannung vermessen), dann wählst du ganz normal eine der Möglichkeiten als Referenzspannung, machst eine Messung und wendest den Dreisatz an um aus der bekannten Referenzspannung und dem Ergebnis vom ADC die Spannung am Messeingang zu errechnen. Aklso das ganz normale Prozedere, wie es in praktisch jedem Tutorial beschrieben ist.
:
Bearbeitet durch User
die Versorgungsspannung messen ist schon richtig
also irgendwie klappt das nicht. Da ich den Tiny nur als SMd verbaut hier hatte, habe ich es jetzt auf einem Steckbrett mit einem mega1284P Aber auch da...klappt es nicht...
1 | function Adc_Read_(channel : byte) : word; |
2 | begin |
3 | ADMUX := channel; |
4 | ADMUX.0 := 0; //ausklammern? |
5 | ADMUX.1 := 1; // ausklammern? |
6 | ADMUX.2 := 1; |
7 | ADMUX.3 := 1; |
8 | ADMUX.4 := 1; |
9 | ADMUX.5 := 0; |
10 | ADMUX.6 :=0; |
11 | ADMUX.7 :=0; |
12 | //ADCSRA := %11000111; |
13 | ADCSRA := 199; |
14 | while ADCSRA.6 = 1 do nop; |
15 | Lo(result) := ADCL; |
16 | Hi(result) := ADCH; |
17 | end; |
oder geht das mit dem mega1284P nicht?
Also in meinem Datenblatt steht REFS1 REFS0 Voltage Reference Selection 0 0 AREF, Internal Vref turned off 0 1 AVCC with external capacitor at AREF pin 1 0 Internal 1.1V Voltage Reference with external capacitor at AREF pin 1 1 Internal 2.56V Voltage Reference with external capacitor at AREF pin Wieso dann 00, ich dachte, VCC sollte die Referenzspannung werden, um sie mit VBG zu vergleichen.
stimmt schon, hatte ich vergessen wieder zu ändern bevor ich es hier schreibe... Hatte ich aber auch schon erfolglos versucht..
ich verstehe es immer noch nicht, am AREF sollte die interne gewählte Aref anliegen oder extern angelegt werden, du willst die interne nutzen, also kannst du die an AREF messen ! aber ohne einen analog IN zu nutzen wüsste ich nicht wie man messen will ! Es gibt doch nur den analog IN über die AMUX Auswahl ! Ich wüsste keinen internen Weg zu analog IN
Joachim B. schrieb: > Ich wüsste keinen internen Weg zu analog IN Der Multiplexer endet nicht mit den externen Pins. Intern schaltbar ist u.a. die Bandgap-Spannung von üblicherweise 1,1V.
1 | //Atmega48
|
2 | //Ref = AVcc, Channel = Bandgap
|
3 | ADMUX = (1 << REFS0) | (1 << MUX3) | (1 << MUX2) | (1 << MUX1); |
4 | //Prescaler fuer 1MHz
|
5 | ADCSRA = (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0); |
6 | |
7 | int GetVcc(void) |
8 | {
|
9 | ADCSRA |= (1 << ADSC); |
10 | while(ADCSRA & (1 << ADSC)); |
11 | return 1023 * 1100 / ADC; //Vcc in mV |
12 | }
|
mfg.
Ich bin jetzt auch etwas irritiert; derzeit klappt es bei mir nur (ATmega1284P), wenn ich statt der Abfrage auf ADSC ein Warten mit ca. 100 ms einbaue und die 1. Messung verwerfe. Vielleicht versuchen Sie es ebenso.
der alte Hanns schrieb: > und die 1. Messung verwerfe muss nicht immer oder öfter ein dummy Read ausgeführt werden, habe ich noch so in Erinnerung
der alte Hanns schrieb: > Ich bin jetzt auch etwas irritiert; derzeit klappt es bei mir nur > (ATmega1284P), wenn ich statt der Abfrage auf ADSC ein Warten mit ca. > 100 ms einbaue kann ich mir eigentlich kaum vorstellen. Code?
Thomas Eckmann schrieb: > Der Multiplexer endet nicht mit den externen Pins. Intern schaltbar ist > u.a. die Bandgap-Spannung von üblicherweise 1,1V. daraus werde ich nicht schlauer das ich die REF 1,1V wählen kann weiss ich doch nur wenn kein IN gewählt wird, warum selektierst du die AMUX ?
Joachim B. schrieb: > der alte Hanns schrieb: >> und die 1. Messung verwerfe > > muss nicht immer oder öfter ein dummy Read ausgeführt werden, habe ich > noch so in Erinnerung es kann sein, dass die erste Messung nach einem Kanalwechsel nicht so prickelnd ist. Das hängt hauptsächlich von der Eingangsimpedanz zum ADC ab. Dann kann sich die S&H Schaltung u.U. nicht schnell genug auf die zu messende Spannung einstellen.
Karl Heinz schrieb: > Joachim B. schrieb: >> der alte Hanns schrieb: >>> und die 1. Messung verwerfe >> >> muss nicht immer oder öfter ein dummy Read ausgeführt werden, habe ich >> noch so in Erinnerung > > es kann sein, dass die erste Messung nach einem Kanalwechsel nicht so > prickelnd ist. Das hängt hauptsächlich von der Eingangsimpedanz zum ADC > ab. Dann kann sich die S&H Schaltung u.U. nicht schnell genug auf die zu > messende Spannung einstellen. AUs dem Datenblatt
1 | When the bandgap reference voltage is used as input to the ADC, |
2 | it will take a certain time for the voltage to stabilize. If not |
3 | stabilized, the first value read after the first conversion may |
4 | be wrong. |
Joachim B. schrieb: > das ich die REF 1,1V wählen kann weiss ich doch Nein. Referenz ist Vcc. Gemessen wird die konstante Bandgap-Spannung von 1,1V. Es wird eine konstante Spannung gegen eine Unbekannte gemessen. Je niedriger der ADC-Wert, desto höher ist diese Spannung. Ein bisschen von hinten durch die Brust ins Auge: 1023 * 1100 / ADC; //Vcc in mV mfg.
Karl Heinz schrieb: > es kann sein, dass die erste Messung nach einem Kanalwechsel nicht so > prickelnd ist. bzw. nach dem Einschalten vom ADC ! erst mal dummy READ
Joachim B. schrieb: > Thomas Eckmann schrieb: >> Der Multiplexer endet nicht mit den externen Pins. Intern schaltbar ist >> u.a. die Bandgap-Spannung von üblicherweise 1,1V. > > daraus werde ich nicht schlauer > > das ich die REF 1,1V wählen kann weiss ich doch > > nur wenn kein IN gewählt wird, warum selektierst du die AMUX ? Jetzt verwirrst du uns. Wovon redest du überhaupt? Fange nwir mal an mit: von welchem µC redest du?
Jetzt klappt es, ich kann aber nur Assembler liefern: ldi tmp0,(0<<REFS1)+(1<<REFS0)+$1E sts ADMUX,tmp0 ldi tmp0,(1<<ADEN) sts ADCSRA,tmp0 rcall wait50ms ldi tmp0,(1<<ADEN)+(1<<ADSC)+(1<<ADPS2)+(1<<ADPS1)+(1<ADPS0) ; /128 sts ADCSRA,tmp0 lds tmp0,ADCSRA sbrc tmp0,ADSC rjmp pc-3 lds tmp0,ADCL lds tmp1,ADCH
ich messe in einer Schleife natürlich testweise..und lasse die einfach anzeigen..also das mit dem Verwerfen kann es nicht sein.. Naja, wie gesgt, zumindest der tiny44 kann gezielt Vref 1.1 als Eingang anwählen und explizieht die Stromversorgung als REF nehmen.. Naja...wie gesagt...steht leider nicht im Wiki und das es nicht so selbstverstänlich ist sieht man ja jetzt gerade.. Und das Wiki sollte dazu da sein jede Kleinigkeit zu erklähren..außer man hat Angst das das Internet irgendwann voll ist :-) Natürlich könnte man stattdessen in Foren fragen..wo man dann aber wieder aufgefordert wird doch erstmal zu lesen...da beist sich die Katze in den Schwanz..aber was weiß ich schon :-)
der alte Hanns schrieb: > (1<<ADPS2)+(1<<ADPS1)+(1<ADPS0) ; /128 Läuft dein Controller mit 20MHz? Je länger, je lieber ist nicht die Lösung, sondern der richtige Prescaler. mfg.
der alte Hanns schrieb: > lds tmp0,ADCSRA > sbrc tmp0,ADSC > rjmp pc-3 passt doch. Weiß gar nicht was du hast
Karl Heinz schrieb: > Fange nwir mal an mit: von welchem µC redest du? ich grad vom m1284p Datenblatt gerade offen ! der TO vom Tiny, aber so verschieden sollten die doch nicht sein. Bis jetzt habe ich ADC immer über einen ADCin 0-7 gemacht, wie soll der interne Weg zur Bandgap geschaltet werden ohne einen ADCin zu wählen ?
Mister Jones schrieb: > Naja...wie gesagt...steht leider nicht im Wiki Aber es steht im Datenblatt. Und DAS ist deine Bibel.
Joachim B. schrieb: > Karl Heinz schrieb: >> Fange nwir mal an mit: von welchem µC redest du? > > ich grad vom m1284p Datenblatt gerade offen ! > > der TO vom Tiny, aber so verschieden sollten die doch nicht sein. > > Bis jetzt habe ich ADC immer über einen ADCin 0-7 gemacht, wie soll der > interne Weg zur Bandgap geschaltet werden ohne einen ADCin zu wählen ? Tabelle 23.4 auf Seite 259 Ganz unten, die vorletzte Zeile in der Tabelle
> passt doch.
Jetzt ja, vorher nicht - der Trick ist, nach dem Einschalten des ADC
etwas zu warten.
Joachim B. schrieb: > ich grad vom m1284p Datenblatt gerade offen ! Dann guck doch mal in die Tabelle unter der Registerbeschreibung von ADMUX. mfg.
Karl Heinz schrieb: >> Bis jetzt habe ich ADC immer über einen ADCin 0-7 gemacht, wie soll der >> interne Weg zur Bandgap geschaltet werden ohne einen ADCin zu wählen ? > > Tabelle 23.4 auf Seite 259 > Ganz unten, die vorletzte Zeile in der Tabelle Siehe Bild
Da hängen u.a. SDCards dran, und das SPI mit denen ist ja nicht so flott.
Karl Heinz schrieb: > Siehe Bild das habe ich schon gesehen aber ich misstraue den Datenblättern immer etwas weil ich mir eine Differenzialmessung mit beide Spannungen an einem PIN so schlecht vorstellen kann 01000 ! eine ADC0 nach ADC1 Messung habe ich dagegen schon gemacht 01001 aber wie geht eine diff Messung mit beide Spannungen an ADC0 ???? wie wir schon gelernt hatten strotzen die Datenblätter nur so von C & P Fehlern......
:
Bearbeitet durch User
Also, Bart, wie Sie sehen, funktioniert es (zumindest auf dem ATmega1284P), und obiges Assemblerprogramm auf c umzusetzen wird ein leichtes für Sie sein - Bart? -?- Bart?? Na, wenn der sich in die Disco verabschiedet hat, verabschiede ich mich ins Bett. Gute Nacht allerseits.
Joachim B. schrieb: > aber wie geht eine diff Messung mit beide Spannungen an ADC0 ???? Indem man einfach misst. Joachim B. schrieb: > wie wir schon gelernt hatten strotzen die Datenblätter nur so von C & P > Fehlern...... Teilweise ja. In diesem Fall aber ganz und gar nicht. Diese Messung dient dazu, den internen Offset zu ermitteln, um ihn bei der Ergebnisrechnung mit einzubeziehen. Das steht aber auch im Datenblatt. mfg.
:
Bearbeitet durch User
Thomas Eckmann schrieb: > Joachim B. schrieb: >> aber wie geht eine diff Messung mit beide Spannungen an ADC0 ???? > > Indem man einfach misst. wie denn ? ich klemme 2 ! Spannungen einer DIFF Messung an ADC0 01000 und messe das 10-fach verstärkte Signal ? das geht nicht in meinen Kopf ! für mich ist eine Differenz von 2 Spannungen auf einen Pin immer NULL ! auch 10x verstärkt ist das NULL
Joachim B. schrieb: > Karl Heinz schrieb: >> Siehe Bild > > das habe ich schon gesehen aber ich misstraue den Datenblättern immer > etwas weil ich mir eine Differenzialmessung mit beide Spannungen an > einem PIN so schlecht vorstellen kann Kommt eben als Ergebnis 0 raus. Zumindest sollte es das, wenn der zugeschaltete Verstärker keinen Offsetfehler hat. Auf die Art kann man den messen.
Joachim B. schrieb: > für mich ist eine Differenz von 2 Spannungen auf einen Pin immer NULL ! > auch 10x verstärkt ist das NULL Ja. In einer idealen Welt mit idealer Elektronik wäre das so. In der Realität ist aber noch etwas zwischen den Pins und dem eigentlichen ADC. Wer misst, misst Mist. Das gilt hier auch. Die Spannung, die man mit ADC0 gegen ADC0 misst, ist genau dieser Mist. Dieser Mist verfälscht aber auch die Messung gegen andere Eingänge. Durch diese Messung ermittelt man diesen Mistfaktor. mfg.
:
Bearbeitet durch User
Karl Heinz schrieb: > Kommt eben als Ergebnis 0 raus. > Zumindest sollte es das, wenn der zugeschaltete Verstärker keinen > Offsetfehler hat. > Auf die Art kann man den messen. Thomas Eckmann schrieb: > Durch diese Messung ermittelt man diesen Mistfaktor. also doch nicht nutzbar für eine Differenzmessung OK als Fehlerfinder verstehe ich das jetzt, DANKE @ euch beiden !
hm...geht irgendwie immer noch nciht..teste es heute Abend nochmal..habe mir jetzt nochmal testweise tiny44A als DIP bestellt...das ist einfach zwecks Tests
Bart schrieb: > hm...geht irgendwie immer noch nciht.. Dann zeig halt mal dein ganzes Machwerk, auch wenn die wenigsten Freude daran haben werden, bei sowas ...
1 | function Adc_Read_(channel : byte) : word; |
2 | begin
|
3 | ADMUX := channel; |
4 | ADMUX.0 := 0; //ausklammern? |
5 | ADMUX.1 := 1; // ausklammern? |
6 | ADMUX.2 := 1; |
7 | ADMUX.3 := 1; |
8 | ADMUX.4 := 1; |
9 | ADMUX.5 := 0; |
10 | ADMUX.6 :=0; |
11 | ADMUX.7 :=0; |
12 | //ADCSRA := %11000111;
|
13 | ADCSRA := 199; |
14 | while ADCSRA.6 = 1 do nop; |
15 | Lo(result) := ADCL; |
16 | Hi(result) := ADCH; |
17 | end; |
... erst mal die Bits den Bedeutungen zuordnen zu müssen. Kannst du denn keine symbolischen Bitnamen benutzen? Aber eines gleich vorweg. Wenn du ADMUX den Kanal zuweist und dann an den Bits rumpfiremelst, was denkst du welchen Sinn dann die Zuweisung des Kanals überhaupt hatte? (Und sowas
1 | ADCSRA := 199; |
ist sowieso der Supergau schlechthin. Das als Dezimalzahl hinzuschreiben, schon alleine dafür verdienst du, dass es nicht funktioniert.
:
Bearbeitet durch User
wie gesagt...durch die Tests ist das mittlerweile zerfleddert...mal HEx mal Bit mal dezimal..um Fehlermöglichkeiten zu testen..aebr nichts hilft halt.. Das gleiche natürlich beim admus:= chancell...normalerweise ist das natürlich so gedacht, das ich nur den Kanal angeben muss..zu testzwecken eben deaktivert..
Bart schrieb: > wie gesagt...durch die Tests ist das mittlerweile > zerfleddert...mal HEx > mal Bit mal dezimal..um Fehlermöglichkeiten zu testen..aebr nichts hilft > halt.. > Das gleiche natürlich beim admus:= chancell...normalerweise ist das > natürlich so gedacht, das ich nur den Kanal angeben muss..zu testzwecken > eben deaktivert.. Die Ausrede zählt überhaupt nicht. Dafür
1 | ADCSRA := 199; |
machst du zehn Mal Kopf -> Tisch. mfg.
> Die Ausrede zählt überhaupt nicht.
Abgesehen davon.
Welche Fehlermöglichkeiten sollen das sein? Das der Compiler eine
Hexzahl nicht richtig umsetzt?
Träum weiter und schieb nur immer schön dem Compiler die Schuld in die
Schuhe.
:
Bearbeitet durch User
alter..ich habe k.a. woher die Zahl kommt, ich meine sogar das war sogar direkt vom Compilerhersteller!! im Forum gepostet auf eine Frage von mir...ist auch absolut egal ..meine Güte... Nur weil es nicht schön ist hat es so gar nichts mit dem Problem zu tun... Üblicherwise mache ich es sogar mit %01010101 und auch da gäbe es jetzt Diskussionen..also wieder zurück zum Thema..mal sehen ob ich heute noch zum Test komme
es liegen jetzt 3,30V an aber er zeigt 1,87?! Beim tiny44
1 | function Adc_Read_(channel : byte) : word; |
2 | begin |
3 | ADMUX.0 := 0; |
4 | ADMUX.1 := 0; |
5 | ADMUX.2 := 1; |
6 | ADMUX.3 := 1; |
7 | ADMUX.4 := 1; |
8 | ADMUX.5 := 0; |
9 | ADMUX.6 :=0; |
10 | ADMUX.7 :=0; |
11 | ADCSRA := %11000111; |
12 | delay_ms(50); |
13 | //ADCSRA := 128; //199 |
14 | while ADCSRA.6 = 1 do nop; |
15 | Lo(result) := ADCL; |
16 | Hi(result) := ADCH; |
17 | end; |
ach verdammt.. so ADMUX.0 := 1; ADMUX.1 := 0; ADMUX.2 := 0; ADMUX.3 := 0; ADMUX.4 := 0; ADMUX.5 := 1; ADMUX.6 :=0; ADMUX.7 :=0; ADCSRA := %11000111; delay_ms(50); //ADCSRA := 128; //199 while ADCSRA.6 = 1 do nop; Lo(result) := ADCL; Hi(result) := ADCH; dann zeigt er 0,03
ahh..k.A. warum, aber jetzt gehts :-) ADMUX.0 := 1; ADMUX.1 := 0; ADMUX.2 := 0; ADMUX.3 := 0; ADMUX.4 := 0; ADMUX.5 := 1; ADMUX.6 :=0; ADMUX.7 :=0; //ADCSRA := %11000111; delay_ms(50); ADCSRA := 199; //199 while ADCSRA.6 = 1 do nop; Lo(result) := ADCL; Hi(result) := ADCH;
Bart schrieb: > Nur weil es nicht schön ist hat es so gar nichts mit dem Problem zu > tun... Es geht nicht um Schönheit, sondern um Verständlichkeit. In C schreibt man das üblicherweise so:
1 | //Ref = AVcc, Channel = Bandgap
|
2 | ADMUX = (1 << REFS0) | (1 << MUX3) | (1 << MUX2) | (1 << MUX1); |
3 | //Prescaler fuer 1MHz
|
4 | ADCSRA = (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0); |
weil es niemanden interessieren muss, an welcher Bitposition das REFS0-Bit liegt. Und weil selbst die grösste Dumpfbacke auf einen Blick sieht, was hier eingestellt wurde. Und weil selbst die grösste Dumpfbacke den Code fehlerfrei eingeben kann. Damit
1 | ADCSRA := 199; |
kann niemand etwas anfangen und die Gefahr, dass man sich dabei verrechnet, ist viel zu gross. Eine ähnliche Möglichkeit wird es in deinem Pascaldialekt auch geben. mfg.
:
Bearbeitet durch User
nur irgendwie geht bei mir die Variante... egal, jedenfalls geht es jetzt :-) volt:= (1023*107)/Adc_Read_(1);
Bart schrieb: > alter..ich habe k.a. woher die Zahl kommt, ich meine sogar das war > sogar direkt vom Compilerhersteller!! im Forum gepostet auf eine Frage > von mir...ist auch absolut egal ..meine Güte... > Nur weil es nicht schön ist hat es so gar nichts mit dem Problem zu > tun... Du hast ein Problem. Du willst von uns haben, dass wir den Code kontrollieren. Mit einer unübersichtlichen Schreibweise wirfst du uns (und auch dir selber) Prügel zwischen die Beine. Ob das mit deinem Problem etwas zu tun hat oder nicht, kann erst mal keiner sagen. Denn wenn wir (ich zumindest) Fehler in fremden Code suchen, dann gehen wir von gar nichts als gesichert aus. Alles, jedes Detail, wird überprüft. Und zumindest meine Motivation ist im Keller, wenn ich zur Kontrolle der Einstellungen mit dem Datenblatt 3-mal so lange brauche, als ich brauchen würde, wenn du eine ordentliche Schreibweise gewählt hättest, bei der man auf einen Blick sieht, welche Bits (Bitnamen) du in welchem Konfigurationsregister gesetzt hast. Da gehts also nicht nur um Schönheit. Das sind nur Neulinge, die glauben ein schönes Programm ist Luxes und das kann man hinterher immer noch schön machen. Die Beobachtung ist nämlich auch die, dass es sehr oft diejenigen mit dem scheuslichsten und am schlechtest lesbaren Code sind, die dann die blödesten Fehler im Code haben. Du kannst aus dieser Beobachtung den Schluss ziehen, dass ein schönes und gut zu lesendes Programm auch einen Einfluss auf die Fehlerhäufigkeit hat. Du kannst das natürlich auch alles einfach ignorieren.
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.