Hallo zusammen, am vorgestrigen Abend bei Gewitter hab ich warscheinlich mein STK500 kaputt gemacht. Als Stromversorgung fürs STK hab ich ein ungeregeltes 9V 300mA Netzteil benutzt. Das war sicher ein Fehler. Im Leerlauf kommen aus dem Netzteil 17V und belastet (mit dem STK) ca. 11V heraus. Aufgesteckt war wie immer ein atmega8 ohne sonstige Pherepherie. Ich hab an diesem Tag einmal mein Programm downloaden können und beim zweiten mal nicht mehr. Ich hab auch mal die VTARGET gemessen welche erschreckender Weise ca. 6.7V beträgt. Warscheinlich eine Spannungspitze im 230V Netz. Fernseher, Hifi Anlage und PC waren auch an, ohne das was kaputt ist. Nun hab ich gelesen, das man die VTARGET irgendwie mit AVRStudio regeln kann. Nun benutze ich aber schon seit Ewigkeiten Linux mit dem Eclipse+AVR Plugin. Dort, und auch bei avrdude kann ich eine solche Einstellung nicht finden. Habt Ihr noch eine Idee? Ich hab auch mal die Spannung an den Board Spannungsreglern gemessen. Der 78M05 bringt noch 5V, aber der dicke LM317w macht hier die 6.7V. Nun hab ich ein bischen bedenken, das der ATTINY und der ATMEGA8535 oder andere Komponenten so eine hohe Spannung vertragen. Gibt es Stellen auf dem Board die ich noch überprüfen kann? Gibt es eine Firma oder jemanden der mir mein schönes Board, mit dem ich soviel erlebt hab ;-), reparieren kann? Grüße
Das STK500 kann bis 12V Spannungsversorgung vertragen. In AVRStudio wird der LM317 (für vtarget) geregelt. Installiere doch mal AVRStudio und setze die Spannung wieder herunter
mike schrieb: > Das STK500 kann bis 12V Spannungsversorgung vertragen. Atmel gibt hier 15V an. marco polo schrieb: > Der 78M05 bringt noch 5V, aber der dicke LM317w macht hier die 6.7V. Nun > hab ich ein bischen bedenken, das der ATTINY und der ATMEGA8535 oder > andere Komponenten so eine hohe Spannung vertragen. Das ist in der Tat zuviel. Beim STK500 kann für VTarget max. 6V eingestellt werden. Schau mal, ob sich der ADJ-Pin des LM317 bzw. das Signal PWMA ändert wenn Du die Spannung verstellst (Seite 4 vom Schaltplan des STK500).
Ziehe mal den "AREF"-Jumper ab, dann sollte die Targetspannung wieder stimmen. Wenn der STK einmal ein Servicepack bekommt, fällt der Fehler erst an SP3 von Atmel AVR-Studio4 auf.
marco polo schrieb: > Eclipse+AVR Plugin. Dort, und auch bei avrdude kann ich eine solche > Einstellung nicht finden. Habt Ihr noch eine Idee? http://download.savannah.gnu.org/releases/avrdude/avrdude-doc-5.10.pdf Seite 19.
1 | 3 Terminal Mode Operation |
2 | AVRDUDE has an interactive mode called terminal mode that is enabled by |
3 | the ‘-t’ option. |
4 | This mode allows one to enter interactive commands to display and modify |
5 | the various device memories, perform a chip erase, display the device |
6 | signature bytes and part parameters, and to send raw programming commands. |
7 | Commands and parameters may be abbreviated to their shortest unambiguous |
8 | form. Terminal mode also supports a command history so that previously |
9 | entered commands can be recalled and edited. |
10 | 3.1 Terminal Mode Commands |
11 | The following commands are implemented: |
12 | ... |
13 | vtarg voltage |
14 | Set the target’s supply voltage to voltage Volts. |
Liest hier eigentlich niemand mit ? ER HAT KEIN WINDOWS, daher kann er auch kein AVRStudio installieren Und trotzdem beziehen sich drei von drei Antworten auf AVRStudio. Lesen muss wirklich kompliziert sein.
Peter W. schrieb: > ER HAT KEIN WINDOWS, daher kann er auch kein AVRStudio installieren Und > trotzdem beziehen sich drei von drei Antworten auf AVRStudio. Und wo habe ich etwas vom AVR Studio geschrieben? > Lesen muss wirklich kompliziert sein. Scheint so.
Vielen Dank erstmal für die vielen Antworten, Ihr seit super fix! Super Forum, danke Euch! Danke Michael, da hab ich doch mit VTARGET in dem AVRDUDE Turorial nach dem Falschen gesucht. Mit den 6V, das hab ich nun mit ner virtualbox und dem avrstudio auch sehen können. Leider gibt meine OSE Version den ttyUSB0 von meinen USB-FTDI Adaptern nicht ans Windows durch. Aber die Idee mit dem AREF Jumper war Gold Wert. Hab ich gemacht und ich kann wieder mit avrdude lesen und flashen! :~> avrdude -pm8 -cstk500v2 -P/dev/ttyUSB1 -b115200 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9307 avrdude: safemode: Fuses OK avrdude done. Thank you. Nun hab ich einfach mal ein altes funktionierendes Programm geflascht und die VREF am Board ist wieder hochohmig, so wie es sein sollte. Am VREF vom uC kann ich 5V messen. Wenn ich aber mein ADC Programm flasche ist die VREF am board auf 2.5V und die VTARGET geht auf 6.7V hoch. Hier mal ein Schnipsel des scheinbar fehlerhaften codes:
1 | /* enable internal reference voltage */
|
2 | ADMUX |= ((1 << REFS1) + (1 << REFS0)); |
3 | |
4 | /* select ADC the input channel */
|
5 | ADMUX &= (~(1 << MUX3) + ~(1 << MUX2) + ~(1 << MUX1) + ~(1 << MUX0)); /* ADC0 */ |
6 | |
7 | /* the input clock frequency should be between 50-200kHz
|
8 | * so the prescaler should be:
|
9 | * 8MHz: 64
|
10 | * 12MHz: 64
|
11 | * */
|
12 | ADCSRA |= ((1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0)); |
13 | |
14 | /* ADC Enable, set free running mode */
|
15 | ADCSRA |= ((1 << ADEN) + (1 << ADFR)); |
Für mich sieht das so aus, als ob sich im STK500 etwas verändert wenn ich diesen Code flasche. Ich bin froh das mein STK doch nicht kaputt ist, verstehen tue ich das aber nicht.
Du solltest dir noch mal genau anschauen, wie man einzelne Bits in einem Register setzt oder löscht. Bei dir steht am Ende auf keinen Fall der gewünschte Wert in ADMUX und ADCSR.
Hey Uwe, also ich kann da keinen Fehler feststellen. Ich hab mir die Bits mal über den UART ausgeben lassen sowohl mit meinem Beispiel, als auch in der abgeänderten Variante unten.
1 | /* enable internal reference voltage */
|
2 | ADMUX |= ((1 << REFS1) + (1 << REFS0)); |
3 | |
4 | /* select ADC the input channel */
|
5 | ADMUX &= (~(1 << MUX3) + ~(1 << MUX2) + ~(1 << MUX1) + ~(1 << MUX0)); /* ADC0 */ |
6 | |
7 | /* the input clock frequency should be between 50-200kHz
|
8 | * so the prescaler should be:
|
9 | * 8MHz: 64
|
10 | * 12MHz: 64
|
11 | * */
|
12 | ADCSRA |= ((1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0)); |
13 | |
14 | /* ADC Enable, set free running mode */
|
15 | ADCSRA |= ((1 << ADEN) + (1 << ADFR)); |
setzt die Bits folgendermaßen: REFS1:1, REFS0:1, MUX3:0, MUX2:0, MUX1:0, MUX0:0 ADPS2:1, ADPS1:1, ADPS0:0, ADEN:1, ADFR:1 Die Form sieht besser aus, bringt aber auch das gleiche Ergebnis:
1 | /* enable internal reference voltage */
|
2 | ADMUX |= ((1 << REFS1) | (1 << REFS0)); |
3 | |
4 | /* select ADC the input channel */
|
5 | ADMUX &= ~((1 << MUX3) | (1 << MUX2) | (1 << MUX1) | (1 << MUX0)); /* ADC0 */ |
6 | |
7 | /* the input clock frequency should be between 50-200kHz
|
8 | * so the prescaler should be:
|
9 | * 8MHz: 64
|
10 | * 12MHz: 64
|
11 | * */
|
12 | ADCSRA |= ((1 << ADPS2) | (1 << ADPS1)); |
13 | ADCSRA &= ~(1 << ADPS0); |
14 | |
15 | /* ADC Enable, set free running mode */
|
16 | ADCSRA |= ((1 << ADEN) | (1 << ADFR)); |
REFS1:1, REFS0:1, MUX3:0, MUX2:0, MUX1:0, MUX0:0 ADPS2:1, ADPS1:1, ADPS0:0, ADEN:1, ADFR:1 Aber freilich sollte man sich an den "Efficient C Coding" Guide von ATMEL halten und die Makros benutzen... /* Set and clear bits in I/O registers can also be declared as macros */
1 | #define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
|
2 | #define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
|
3 | |
4 | /* Macro for testing of a single bit in an I/O location*/
|
5 | #define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
|
Ich muss doch nochmal fragen, vielleicht hab ich einfach zu viel Text rausgeballert. Wenn ich bei meinem atmega8 die interne Referenzspannung von 2.56V anschalte und den AREF Jumper am stk500 gesteckt habe, warum messe ich dann an VTG(=VTARGET) 6.7V ? Und warum geht da mein atmega8 nicht kaputt, da er ja nur bis 5.5V funktionieren sollte. (Alle fuse-bits sind im default Zustand)
marco polo schrieb: > Wenn ich bei meinem atmega8 die interne Referenzspannung von 2.56V > anschalte und den AREF Jumper am stk500 gesteckt habe AREF kann Eingang oder Ausgang sein. Wenn er Ausgang ist (interne Referenz oder VCC), dann darfst Du nicht nen anderen Ausgang dagegen kämpfen lassen, basta! Den AREF-Jumper brauchte man nur für die ganz alten AT90S4433. Also ab den AREF Jumper und ganz weit weg schmeißen. Peter
Hast Recht, AREF war Ausgang. Jumper flog gerad mit Schwung weg... ;-) Danke dir!
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.