Hallo zusammen, ich bin gerade dabei ein Moodlight mit dem ATMEGA16 zu entwerfen und auf dem STK500 auszutesten. Dabei habe ich ein unerklärliches Phänomen: Ich habe ein Poti an ADC0, um die Geschwindigkeit des Farbwechsels zu steuern. Die beiden Enden liegen an VTG und GND des STK500, der Schleifer an PA0 (=ADC0). Zwischen Schleifer und PA0 geht noch ein 47nF gegen GND, um Störsignale abzuleiten. AREF ist gegen GND mit 100n abgeblockt. Das Programm sollte auch i.O. sein, bis ca. 2,5 V (halbe Schleiferstellung) funktioniert alles bestens und ich bekomme saubere Werte entsprechend Spannung am ADC. Mit dem Oszi von PA0 gegen GND am STK 500 gemessen eine glatte Gleichspannung. Über 2,5V bricht in Abständen von 10 ms die Spannung um 1V (bei 5V) ein und ich habe ein Spannungsprofil wie im beigefügten Foto vom Oszi. Das gleiche passiert, wenn ich VTG direkt auf PA0 gebe. Alle üblichen Fehlerquellen habe ich schon geprüft wie z.B. ADC nicht auf AVCC als Referenz eingestellt, Jumper AREF ist nicht gesetzt usw. Wie gesagt, bis Mittelstellung funktioniert es tadellos, danach geht es los. Ich kann mir das nicht erklären. Fällt Euch dazu etwas ein? Viele Grüße und vielen Dank im Voraus Thomas
Hi Welchen Widerstand hat denn dein Poti? MfG Spess
spess53 schrieb: > Hi > > Welchen Widerstand hat denn dein Poti? > > MfG Spess Hi Spess, Poti hat 1 K gemäß Datenblatt (10k or less). Müßte ich nicht auch die ADC direkt an 5V hängen können, ohne zu große Ströme zu bekommen? VG Thomas
Hallo zusammen, hat keiner eine Idee? Ich bin langsam am Verzweifeln und überlege, das ganze auf einem Steckbrett aufzubauen, um zu sehen ob das am STK500 liegt. Wäre super, wenn jemand einfach mal mit dieser Funktion einen Mega 16 auf einem STK500 beschreibt und dann PA0 an VTG legt (Jumper AREF nicht gesetzt) - dann müssten ja 3FF stabil zurückgegeben werden. Falls das bei Euch funktioniert und bei mir nicht könnte der Chip oder der STK bei mir eine Macke haben. Wenn das dann läuft, gebe ich selbstverständlich das Projekt als Freeware ins Board hier zurück. Viele Grüße Thomas uint16_t LeseADC(void) { uint8_t i; // Variable für Schleifenzähler uint16_t result; // Variable, in die der ADC Wert eingelesen wird ADMUX = (1<<REFS0); // Kanal 0 und AVCC als Referenz ADCSRA |= (1<<ADPS1) | (1<<ADPS2)|(1<<ADPS0); ADCSRA |= (1<<ADEN); // setzen von ADEN aktiviert den ADC ADCSRA |= (1<<ADSC); // setzen von ADSC startet eine ADC-Wandlung (single conversion) while ( ADCSRA & (1<<ADSC) ) { ; } result = ADCW; result = 0; // in der nächsten Schleife werden 4 Konversionen durchgeführt und die Mittelwerte gebildet for( i=0; i<4; i++ ) { ADCSRA |= (1<<ADSC); // setzen von ADSC startet eine ADC-Wandlung (single conversion) while ( ADCSRA & (1<<ADSC) ) // auf Abschluss der Konvertierung warten { ; } result += ADCW; // Wandlungsergebnisse aufaddieren } ADCSRA &= ~(1<<ADEN); // ADEN auf 0 setzen deaktiviert den ADC wieder result /= 4; // Summe durch vier teilen = arithm. Mittelwert return result; }
Hi Machen wir es anders herum. Lade mal das angehängte Hex-File. Wenn du dein Poti an PA0 anschliesst und PORTB mit den LEDs verbindest, zeigen die LEDs die oberen acht Bit des ADC-Wertes an. Getestet auf einem STK500 mit ATMega16 (8MHz interner Oszillator). MfG Spess
Thomas schrieb: > Wäre super, wenn jemand einfach mal mit dieser Funktion einen Mega 16 > auf einem STK500 beschreibt und dann PA0 an VTG legt (Jumper AREF nicht > gesetzt) - dann müssten ja 3FF stabil zurückgegeben werden. Tag, also wenn du immer noch den Test brauchst, melde dich, ich hätte gern im Gegenzug auch einen Test "Beitrag "Re: Universelle Tastenabfrage"; [letzter Beitrag] ich steig auch nicht ganz dahinter. Gruß
Hallo Kollegen, vielen Dank für Eure Unterstützung und die Testprogramme. Ich habe den Fehler jetzt eingekreist, das macht mich aber nicht unbedingt schlauer. Das ASM hat zwar funktioniert, allerdings mit der gleichen Schwingerei am ADC Eingang. Um sicherzustellen, dass es sich nicht um eine Störeinstreuung am ADC handelt, habe ich mir schnell eine "steifere" Spannungsquelle mit einem 317 gebaut und eingeschirmtes Kabel verwendet. Das heisst, die nicht VTG über Poti für die ADC Ansteuerung verwendet, sondern externe Spannung. Und siehe da, die oben auf dem Oszilloskop zu sehende Störspannung kommt von VTG und nicht vom ADC. Die Spannung am ADC ist "sauber", dafür schwingt die gesamte Versorgungsspannung. Genauer gesagt: wenn ich eine Spannung größer 3V auf den ADC Eingang lege, beginnt VTG alle 10 ms kurz einzubrechen und stabilisiert sich dann wieder. Bei Beginn des Phänomens bei 3v auf dem ADC ist der VTG Spannungseinbruch ca. 0,1 V; bei 5V auf dem ADC bricht VTG schon um bis zu 0,8 V ein und damit auch die Highs an den Ausgängen, was zu sichtbarem Flimmern an den angeschlossenen LEDs führt. Jetzt hab ich zwar den Root Cause, bin aber kein Stück schlauer... Falls jemand eine Idee hat, wäre ich dankbar. Viele Grüße Thomas
Hi Dann muss ich erst mal fragen, wo du AREF abgegriffen hast, und wie der AREF-Jumper gesetzt ist. MfG Spess
spess53 schrieb: > Hi > > Dann muss ich erst mal fragen, wo du AREF abgegriffen hast, und wie der > AREF-Jumper gesetzt ist. > > MfG Spess Hi Spess, AREF Jumper ist nicht gesetzt, Programm (siehe oben) nimmt AVCC als Referenz. AREF habe ich mit einer 2er Buchsenleiste an PORTE/AUX mit 100nF gegen GND abgeblockt. Nach STK500 Schaltplan müsste damit HW seitig alles ok sein. VG Thomas
Hi
>AREF Jumper ist nicht gesetzt
Gut das passt.
Also, ich habe alles versucht, um deine Störung hinzubekommen.
Vergeblich.
Im Moment bin ich mit meinen Ideen am Ende.
MfG Spess
spess53 schrieb: > Hi > >>AREF Jumper ist nicht gesetzt > > Gut das passt. > > Also, ich habe alles versucht, um deine Störung hinzubekommen. > Vergeblich. > Im Moment bin ich mit meinen Ideen am Ende. > > MfG Spess Super, danke Dir - ich werde jetzt mal einen neuen Mega probieren und alle sonstigen lasten abklemmen - im aktuellen programm hängen an den timer ausgängen noch 3 mosfets (die laufen aber mit über 1kHz, das passt mit dem störsignal auf der versorgungsspannung um eine größenordnung nicht zusammen) wenn ich mir VTG ansehe sieht das verdächtig nach nicht ausreichend gesiebter Versorgungsspannung aus (zu hohe last). kann aber auch nicht sein, da ich vorn 12V gleichstrom dranhängen habe und was das mit einer fremdspannung >3V am adc zu tun hat ist mir ebenso schleierhaft trotzem vielen dank an alle, die geholfen haben!!!! BTW spess: hast du mal VTG oszilloskopiert bei 5V an deinem asm programm?
Hi >BTW spess: hast du mal VTG oszilloskopiert bei 5V an deinem asm >programm? Ja. VTG, VREF und und ADC0. Nur die üblichen Störungen in der Grössenordnung von 100mV (Spitze-Spitze). Ich habe das Poti auch mal direkt an VREF betrieben. Keine Änderung. >AREF habe ich mit einer 2er Buchsenleiste an PORTE/AUX mit >100nF gegen GND abgeblockt. Hatte ich auch nicht dran. MfG Spess
Hallo zusammen, ich wollte mich bei Euch für die Antworten bedanken. Komme leider erst jetzt dazu. Ich habe die Schaltung jetzt mal extern aufgebaut, ziemlich fliegend und frei verdrahtet. Funktioniert bestens, schwingt nichts. Keine Ahnung was mein STK500 hat, zumal Ihr das Verhalten nicht replizieren konntet. Also: vielen Dank nochmal und viele Grüße Thomas G.
im Datenblatt des ATTiny26 ist ein kleiner Filter für AVCC beschrieben. Denke das das auf die anderen AVR übertragbar ist, eigentlich hätten Sie ihre Empfehlung auch aufs STK500 übertragen sollen.
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.