Anfängerprobleme mit STK500

OP #5321376
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?
OP #5322244
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?
#5322286
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
Angehängte Dateien:
#5322745
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
Angehängte Dateien:
#5323150
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..
Angehängte Dateien:
OP #5324491
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!
Angehängte Dateien:
OP #5324951
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?
#5325381
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.)
OP #5325835
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!!!
OP #5325840
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.
#5326013
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
OP #5327603
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.
OP #5327681
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!!!
#5328077
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.
Gast #5328086
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>

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren