Forum: Mikrocontroller und Digitale Elektronik Anfängerprobleme mit STK500


von Renato K. (robertok)


Lesenswert?

Hallo,

Ich habe mir ein STK500 zugelegt und verwende zum programmieren von 
Atmega8 und atmega16 das Atmel Studio 6. Ich habe den Controller immer 
am Steckplatz lt. Beschreibung. Atmega8 auf sckt3200a2 bzw. Atmega16 auf 
sckt3100a3. Der ISP6Pin ist lt Beschreibung für den Atmega16 mit sprog3 
und für den Atmega8 mit sprog2 verbunden. Die Jumper Einstellungen sind 
auf Standard bzw. Lieferzustand.

Ich würde gerne ein einfaches Programm schreiben und ein Erfolgserlebnis 
haben und habe mir dafür folgendes ausgesucht:

#include <avr/io.h>

int main(void)
{
DDRB |= (1 << PB0);
PORTB |= (1 << PB0);
}

Ich habe das 10 polige Kabel für eine Verbindung von PORTB zu den LEDs 
genommen.

Mein Problem ist, dass immer LED 5 leuchtet. Ich kann PB1 oder 2 oder 4 
nehmen dass ändert nichts.

AtmelStudio erkennt die Controller. Kann auch die Memory löschen. LED 5 
leuchtet dann nicht mehr. Habe zwei mega8 und Mega16 ausprobiert. Immer 
das gleiche.

Kann mir jemand sagen wo ich den Fehler mache?

von rs (Gast)


Lesenswert?

Bei dem stk500 sind LEDs und Schalter Low-aktiv. Hast du das kabel 
verdreht gesteckt (das zu den LEDs geht)?

von Renato K. (robertok)


Lesenswert?

Hallo,

danke für die Nachricht. Leider klappt das auch nicht. Habe auch 
probiert andere Ports zum leuchten zu bringen. Es leuchtet immer LED5. 
Wenn ich den Memory erase leuchtet nichts. Immerhin ändert sich 
wenigstens das.

Habe gelesen das AtmelStudio 6 Probleme machen kann. Ich probiere es 
morgen vielleicht mit der Version 4.

Habt ihr noch Ideen was ich sonst falsch machen könnte?

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Renato K. schrieb:
> Habt ihr noch Ideen was ich sonst falsch machen könnte?

Hi,
probier 'mal über die Verbindung Switches an LED die LEDs manuell über 
die Taster zum Leuchten zu bringen.
Habe bei meinem Board gerade festgestellt, dass es schon mal 
Kontaktfehler geben kann. Also Tasten ein paarmal drücken.

ciao
gustav

von 900ss (900ss)


Lesenswert?

Probier mal hinter deiner letzten Port-anweisung ein


while(1);

Also vor der schließenden geschweiften Klammer der main-funktion. Als 
letzte Anweisung also.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
Oder ein ASM-Proggi.

Die include-Datei evtl.noch targetspezifisch setzen.

viel Spaß

ciao
gustav

: Bearbeitet durch User
von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
habe 'mal versucht zu kompilieren.

Denn das Codebeispiel des TO stammt nämlich etwas abgewandelt sinngemäß 
aus der Hilfedatei des Studio4:

Bei mir wird nur die Meldung "build started" angezeigt und dann nichts 
mehr.
Es war mir von vorne herein klar, dass irgendetwas "Komisches" passiert, 
wenn WinAVR nicht installiert ist.

Also der Compiler beim TO könnte offensichtlich nicht richtig 
"initialisiert" sein.

Aber trotzdem erst einmal die anderen Störmöglichkeiten ausschließen.
a) Hardware - Kontaktfehler
b) MCU fuses?
c) MCU über SPI flashbar mit Hexfile?
d) die Einstellungen des Studio sind verstellt, also in HW settings 
"Clock", 3680000,ISP im Zehner-kHz-Bereich und auf jeden Fall kleiner 
als Clock. Hab gerade reigeguckt: unter Clock stand 14400 und ISP 28 kHz 
das kann nicht gutgehen. Also Schieberegler nach rechts auf 3680000 und 
write.


dazu ein ASM File durch den "Assembler" jagen.
etc.
So könnte man das Problem einkreisen.
Dann sehen wir weiter.

ciao
gustav

: Bearbeitet durch User
von Marco H. (damarco)


Angehängte Dateien:

Lesenswert?

PORTB &= ~(1 << PB0);

Den Port auf Masse ziehen ;)
Aber aufpassen irgend wo ist der ISP drauf, wenn du da Hardware steckst 
könnte der ISP blockiert werden.
1
DDRB |= (1 << PB0);       // damit ist dann PB0 ein Ausgang
2
  int count =65000;
3
  
4
  while(1){
5
    
6
    PORTB |= (1 << PB0);  //PB0 im PORTB setzen
7
    
8
    while(count--);
9
    PORTB &= ~(1 << PB0); //PB0 im PORTB löschen
10
    count=65000;
11
    while(count--);
12
    
13
  }

und es blinkt ;).

Das STK500 funktioniert auch noch mit AtmelStudio7..

: Bearbeitet durch User
von Renato K. (robertok)


Angehängte Dateien:

Lesenswert?

@Marco H:

habe dein programm ausprobiert. atmelstudio zeigt keine fehler an. 
programm funktioniert leider auch nicht. ich habs diesmal wieder mit 
einem Atmega16 probiert. Es "leuchten" nur PB5 und PB6, "miso" bzw 
"mosi".

ich habe dein programm für den PortC umgeschrieben. leider ohne erfolg. 
hier leuchtet auch garnichts. komplett nichts.

@gustav:

habe die switches mit den LEDs verbunden. Funktioniert super! kontakte 
funktionieren!
habe es mit asm noch nicht probiert.

habe mir überlegt ob ich das board ugrade. würdet ihr das machen? ich 
habe mein board kontrolliert, es sind die neuen chips drauf. ich gehe 
davon aus dass man es upgraden kann. Vergleich bitte siehe bilder!

von Renato K. (robertok)


Lesenswert?

Hallo nochmal,

AVR Studio 4 erkennt das STK500 garnicht und kann nicht connecten.

Habe ein Upgrade in AtmelStudio 6 probiert. Board wird hier nicht 
erkannt. Habe den Upgrade Vorgang so gestartet wie beschrieben lt 
Anleitung.

Ich werde noch AtmelStudio 7 probieren und schauen ob es funktioniert.

Im Prinzip sollte es mit AtmelStudio 6 gehen. Wie ihr auf den Bildern 
vom vorigen post erkennt habe ich hoffentlich alle Einstellungen 
richtig.

Der Atmega wird erkannt. Seine fuses und lock bits gelesen.


Jetzt kann ich davon ausgehen das alles gemacht ist um einen 
Programmiervorgang zu starten, richtig?

Denke ich schicke das Board zurück. Was sagt ihr?

von Marco H. (damarco)


Lesenswert?

mach mal ein Foto vom Board so das man die Jumper erkennen kann ! 
Außerdem läuft dein Atmega auf dem internen Clock. Macht für die Port 
Geschichten erstmal mal nichts. Aber das blinken ist ca. 4 mal langsamer 
als bei mir ;).

von Karl B. (gustav)


Lesenswert?

Hi,
das "klassische" STK500-Board hat zwei serielle RS232 SUB D Min 9 pol. 
Buchsen. Von oben draufgesehen ist die zum Programmieren die rechte oder 
die, die zur Powerbuchse (ext. Netzteil bei mir 9V stabilisiert) am 
nächsten montiert ist. (Die andere Buchse wird erst durch Jumperung 
PD0/PD1 mit RX0/TX0- RS232Spare-Pinne als Terminal-Connection nutzbar.)

Die Target-Spannung wird durch PWM erzeugt (war bei mir 'mal ein 
Fehler.)
Also, die erst einmal nachprüfen, ob sie 5V +- Toleranz beträgt und 
konstant bleibt.

Renato K. schrieb:
> Der Atmega wird erkannt. Seine fuses und lock bits gelesen.

Ja, aber ist seine Spannung an den entsprechenden Beinchen wirklich 5V ?

Nehme an, dass keine "echte" serielle Schnittstelle am PC vorhanden ist, 
sondern, dass - wie meistens heute - mit einem USB-RS232-Adapter 
gearbeitet wird. Hier nochmal nachhaken.

ciao
gustav

P.S.:
Renato K. schrieb:
> Denke ich schicke das Board zurück. Was sagt ihr?

Erst einmal nicht, vielleicht ist es wie gesagt ein einfaches 
Kontaktproblem. Und eben die C-Programmierung. Bitte erst einmal ein 
ASM-Prog. versuchen.
(Bei mir ging auf Socket3600A3 der RS232-Pin nicht => Leiterbahn 
nachgelötet.)

: Bearbeitet durch User
von Marco H. (damarco)


Lesenswert?

Es "leuchten" nur PB5 und PB6, "miso" bzw
"mosi".

Das darf nicht sein sie dürfen nur beim Programmieren kurz leuchten bzw. 
flackern. Da ist wohl der ISP mit drauf, die werden auf vTarget gezogen 
womit die LEDs nicht leuchten.

Bitte jetzt wirklich ein Foto vom Board :).

: Bearbeitet durch User
von Renato K. (robertok)


Lesenswert?

Hallo,

danke für eure Beiträge!

@gustav:

habe den RS232 gewählt der am nächsten zur Power-Buchse ist! passt.
ich benutze einen USB-RS232 Wandler von FTDI (USB-COM232-PLUS1) mit den 
richtigen Treibern. ich könnte eventuell den Wandler nochmal 
deinstallieren und erneut überprüfen ob ich den richtigen Treiber dafür 
habe. Möchte ich aber im moment nicht machen, weil das board und der 
ATMEGA von AtmelStudio richtig erkannt (ausser im upgrade-modus, da wird 
es nicht gefunden!) werden und infos vom board bzw vom atmega richtig 
abgerufen werden können.

ich habe auch die pins überprüft. beim sockel des atmega8 liegt auf pin:
7: 5,05V   VCC
21:5,05V   AREF
20:5,05V   AVCC
19:5,05V   PB5 (SCK)
18:4,83V   PB4 (miso)
17:5,05V   PB3 (mosi)
16:4,46V   PB2 (SS/OC1B)
15:4,46V   PB1 (OC1A)
das board wird mit 12v stabilisiert versorgt.

@marco:

sorry. es "leuchten" bzw flackern nur pb5, pb4 und pb3 beim 
programmieren. danach bleibt nur noch pb5 bzw pin19 bzw "sck" auf 5V.

fotos folgen gleich!!!

von Renato K. (robertok)



Lesenswert?

Hier die Fotos!!

Auf den Fotos wo die LEDs zu erkennen sind, kann man erkennen, dass ich 
das Kabel verkehrt angesteckt habe. sorry! Das ist mir gerade 
aufgefallen. Ich habe aber auch das andere Ende am PORT anschluss falsch 
angesteckt. so kommt das gleiche ergebnis raus.

: Bearbeitet durch User
von Kirsch (Gast)


Lesenswert?

Renato K. schrieb:
> Möchte ich aber im moment nicht machen, weil das board und der
> ATMEGA von AtmelStudio richtig erkannt (ausser im upgrade-modus, da wird
> es nicht gefunden!)

Dann Funktion die Serielle Schnittstelle, und du musst da auch nichts 
mehr ändern.

von Karl B. (gustav)


Lesenswert?

Hi,
bei herausgezogener MCU stellen sich bei meinem Board folgende 
Spannungen ein:
Pin1 = 4,91V         Pin28= 0,01V
Pin2 = 4,91V         Pin27= 0,01V
Pin3 = 0,01V         Pin26= 0,01V
Pin4 = 4,91V         Pin25= 0,01V
Pin5 = 4,91V         Pin24= 0,01V
Pin6 = 4,91V         Pin23= 0,01V
Pin7 = 4,91V         Pin22= 0,01V
Pin8 = 0,01V         Pin21= 4,91V
Pin9 = 2,22V         Pin20= 4,91V
Pin10= 0,01V         Pin19= 4,91V
Pin11= 0,01V         Pin18= 4,91V
Pin12= 4,91V         Pin17= 0,89V
Pin13= 0,01V         Pin16= 4,91V
Pin14= 0,01V         Pin15= 0,01V

ciao
gustav

von Marco H. (damarco)


Lesenswert?

Na du musst schon aufpassen das PIN1 mit PIN1 verbunden ist ...

von Karl B. (gustav)


Lesenswert?

Renato K. schrieb:
> Hier die Fotos!!

Hi,
kann keine Abweichung zu meiner Beschaltung sehen, außer, dass ich den 
ATtiny4313 auf SCKT3300D3, entsprechend den SPI auf SPROG3 mit ISP6PIN
verbunden habe.
Und natürlich direkt RS232 mit PC-RS232. ohne USB-Adapter.

Versuche es einmal mit einer anderen MCU. Vielleicht geht es dann.

ciao
gustav

von Renato K. (robertok)


Lesenswert?

Hallo,

@marco:

sorry für die Verkabelung. ich meinte, dass mir die falsche Verkabelung 
nur für das Foto passiert ist. hatte es für die Fotos schnell 
zusammengesteckt und dann auch noch falsch herum. es ist sonst immer 
"siehe Foto" verkabelt. Foto folgt.

@Gustav:

vielen dank für die Messung der einzelnen Pins. Ich habe am Steckplatz 
sckt3200a2 (grün, atmega8) meine Pins auch alle durchgemessen und habe 
abweichende Ergebnisse.

Pin1 = 5,05V         Pin28= 4,46V
Pin2 = 0,00V         Pin27= 4,46V
Pin3 = 0,00V         Pin26= 5,06V
Pin4 = 0,00V         Pin25= 4,83V
Pin5 = 0,00V         Pin24= 5,06V
Pin6 = 0,00V         Pin23= 5,06V
Pin7 = 5,05V         Pin22= 4,96V
Pin8 = 0,00V         Pin21= 0,00V
Pin9 = 2,51V         Pin20= 0,00V
Pin10= 0,00V         Pin19= 0,00V
Pin11= 0,00V         Pin18= 0,00V
Pin12= 0,00V         Pin17= 0,00V
Pin13= 0,00V         Pin16= 0,00V
Pin14= 4,46V         Pin15= 0,00V

nochmal vielen Dank für die Messung Gustav! das hilft viel!

Ich habe ein Upgrade mit AtmelStudio6 probiert. Er findet das Board für 
das Upgrade nicht. Da ich gelesen habe, dass AtmelStudio6 mit Bugs zu 
kämpfen hat werde ich mir Version 7 runterladen und damit probieren ein 
Upgrade zu machen. Ich hoffe dass sich dann die richtigen Werte an den 
Pins einstellen.

von Renato K. (robertok)


Angehängte Dateien:

Lesenswert?

Fotos der Verkabelung!

von Renato K. (robertok)


Lesenswert?

Hallo nochmal,

Habe nochmal alles durchgemessen und habe herausgefunden dass ich meine 
Messungen falsch zugeordnet habe. Ich habe die Pins 15 bis 28 
Spiegelverkehrt zugeordnet.

Korrekt:

Pin1 = 5,05V         Pin28= 0,00V
Pin2 = 0,00V         Pin27= 0,00V
Pin3 = 0,00V         Pin26= 0,00V
Pin4 = 0,00V         Pin25= 0,00V
Pin5 = 0,00V         Pin24= 0,00V
Pin6 = 0,00V         Pin23= 0,00V
Pin7 = 5,05V         Pin22= 0,00V
Pin8 = 0,00V         Pin21= 4.96V
Pin9 = 2,51V         Pin20= 5,06V
Pin10= 0,00V         Pin19= 5,06V
Pin11= 0,00V         Pin18= 4,83V
Pin12= 0,00V         Pin17= 5,06V
Pin13= 0,00V         Pin16= 4,46V
Pin14= 4,46V         Pin15= 4,46V

@Gustav:

Trotzdem sind unterschiede zwischen unseren Messungen festzustellen.

Ich habe aber ein Erfolgserlebnis gehabt!!

Ich habe Atmel Studio 7 installiert und marcos Programm ausprobiert.

Und es funktioniert!! Ich kann sogar auswählen welcher Port leuchten 
soll. SUPER!!

Ich bin trotzdem verwirrt weil die Messungen unterschiedlich sind. Zu 
früh freuen möchte ich mich auch nicht. Ich habe bisher nur die PORTs an 
B ausprobiert und noch nichts anspruchsvolleres programmiert!

Vielen Vielen Dank bis jetzt!!!

von Marco H. (damarco)


Lesenswert?

so super ist mein Programm nicht lol denn die Zählvariable reicht bei 
8MHZ mit 16bit nicht mehr aus um es sinngemäß blinken zu lassen.

Ich hatte aus dem ASF die Delay Routinen geladen, aber ich wurde mit 
Warnungen und Fehlern bombardiert. Ich hätte die Ursache auch gefunden, 
es wäre aber kein einfacher nachvollziehbarer code geworden ;). Da 
fehlten offenbar ein paar Macros ..

ich vermute mal folgendes.. Dein Board hat eine Firmware die abwärts 
AtmelStudio nicht läuft. Von meinen Board war sie 2.0a, ich habe das 
Board irrend wann mal für ein Schülerprojekt wieder aus gekramt.

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

Mach's doch einfach so:
1
 while(1){
2
     PORTB |= (1 << PB0);  //PB0 im PORTB setzen
3
     _delay_ms(200);
4
     PORTB &= ~(1 << PB0); //PB0 im PORTB löschen
5
     _delay_ms(200);
6
   }
Du musst aber vor dem main() noch definieren:
1
#include <util/delay.h>

von Marco H. (damarco)


Lesenswert?

nö es fehlt das macro für den CPU Takt.

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.