Forum: Mikrocontroller und Digitale Elektronik stk500 kaputt was nun?


von Marco P. (Firma: keine) (marcopolo)


Lesenswert?

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

von mike (Gast)


Lesenswert?

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

von Chris (Gast)


Lesenswert?

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).

von Electronicfox (Gast)


Lesenswert?

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.

von Bums (Gast)


Lesenswert?

stk600 kaufn

von Michael H. (michael_h45)


Lesenswert?

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.

von Blödmann (Gast)


Lesenswert?

Meine Güte. Ein Leser! Wo kommt der denn her?

von Peter ⛄ W. (Firma: Huddel und Brassel Ltd.) (jaffel) Benutzerseite


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

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.

von Martin e. C. (eduardo)



Lesenswert?

VTarget über AVRDUDE ändern geht wie im Bilder

Gruß
Martin

von Marco P. (Firma: keine) (marcopolo)


Lesenswert?

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.

von Uwe .. (uwegw)


Lesenswert?

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.

von Marco P. (Firma: keine) (marcopolo)


Lesenswert?

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))

von Marco P. (Firma: keine) (marcopolo)


Lesenswert?

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)

von Peter D. (peda)


Lesenswert?

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

von Marco P. (Firma: keine) (marcopolo)


Lesenswert?

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
Noch kein Account? Hier anmelden.