AS 6 mit STK500 programmieren "Error ID 0x11"

OP #3321317
Lesenswert?

Hallo liebe Gemeinde,

ich mache gerade meine ersten Schritte mit AS6, dem STK500 und C.

Habe eine Kleinigkeit geschrieben und wollte es zum Atmel8 schieben - 
darauf erhalte ich die untere Fehlermeldung.
Leider finde ich im Netz nichts zu "Error ID 0x11" - habt ihr eine 
Ahnung?
1
/*
2
 * Project1.c
3
 *
4
 * Created: 14.09.2013 00:26:55
5
 *  Author: Tischler
6
 */ 
7

8

9
#include <avr/io.h>
10

11
int main(void)
12
{
13
void painta();  // forward declaration
14
void paintb();
15
void paintc();
16
void paintd();
17
void painte();
18
void paintf();
19

20
DDRB  = 0b11111111;
21
DDRD  = 0b00000000;
22
PORTD = 0b11111111;
23

24
  while(1)
25
  {
26
    // Fuehre Aktion aus, wenn Bit Nr. 0 in PIND low (gedrueckt) ist
27
    if ( PIND & (0<<PIND0) )
28
    {
29
      painta();
30
    }
31
    
32
      if ( PIND & (0<<PIND1) )
33
    {
34
      paintb();
35
    }
36

37
    if ( PIND & (0<<PIND2) )
38
    {
39
      paintc();
40
    }
41

42
    if ( PIND & (0<<PIND3) )
43
    {
44
      paintd();
45
    }
46

47
    if ( PIND & (0<<PIND4) )
48
    {
49
      painte();
50
    }
51

52
    if ( PIND & (0<<PIND5) )
53
    {
54
      paintf();
55
    }  
56
    
57
  main();
58
  }
59
return 0;
60
}
61
  
62
void painta(void)
63
{
64
  PORTB = 0b11111111;
65
  main();
66
}
67
  
68
void paintb(void)
69
{
70
  PORTB = 0b00000000;
71
  main();
72
}
73
  
74
void paintc(void)
75
{
76
  PORTB = 0b11111111;
77
  main();
78
}
79
  
80
void paintd(void)
81
{
82
  PORTB = 0b00000000;
83
  main();
84
}
85
  
86
void painte(void)
87
{
88
  PORTB = 0b11111111;
89
  main();
90
}
91
  
92
void paintf(void)
93
{
94
  PORTB = 0b00000000;
95
  main();
96
}
Angehängte Dateien:
Gast #3321356
Lesenswert?

David Schwandt schrieb:
> darauf erhalte ich die untere Fehlermeldung.

Wann erhälst du die Fehlermeldung?
Hast du das STK500 als Programmer richtig eingestellt.
AS6 ist etwas "blöd"...

isnah schrieb:
> Warum muss es immer Atmel-studio sein? Für die Kombination STK500
> mit
> ATmega8 wurde das AVR-Studio "erfunden" und das funktioniert garantiert.

Nur weil mal mit dem AtmelStudio auch noch ARMe, XMegas etc. 
programmieren kann, muss es nicht das falsche sein...
Gast #3321367
Lesenswert?

Hi,
Und wenn du die Probleme mit dem Programme gelöst hast, wirst du 
feststellen, dass dein Programm nicht funktioniert. Zum einen wegen der 
Aufrufe von main(), die dort nicht hingehören. Guck dir mal eines der 
zahlreichen  vorhandenen minimalprogamme zum LED-Blinken an, und wie 
dort Schleifen und funktionsaufrufe verwendet werden. C-Buch von vorn 
nach hinten durcharbeiten könnte auch helfen. Zum anderen sind deine 
Bit-abfragen falsch. Guckst du hier

http://www.mikrocontroller.net/articles/Bitmanipulation

wie man einzelne Bits abfragt und setzt.

Gruß, Heinz
OP #3321515
Lesenswert?

STK500-Besitzer schrieb:
> Wann erhälst du die Fehlermeldung?
> Hast du das STK500 als Programmer richtig eingestellt.
> AS6 ist etwas "blöd"...

Die Meldung kommt, wenn ich den Atmega programmieren möchte bzw. auf den 
grünen Pfeil "Debuggen" klicke. Er fängt an zu programmieren, man siehts 
an den LED's, aber schließt nicht ab.
Das STK500 ist eigentlich richtig konfiguriert, ich habe bereits 
programmieren können. Auch FUSE Abfragen etc. läuft. Es werden mir auch 
keine Errors und keine Warnings in der Error List. Unter Output sagt er 
mir:
1
An error occured while executing command with ID 0x11. Timed out waiting for a response.
2
67 characters was discarded waiting for response start stoken. Protocol state at time of
3
timeout was 'Get Sequence Number'.


katastrophenheonz schrieb:
> Und wenn du die Probleme mit dem Programme gelöst hast, wirst du
> feststellen, dass dein Programm nicht funktioniert. Zum einen wegen der
> Aufrufe von main(), die dort nicht hingehören. Guck dir mal eines der
> zahlreichen  vorhandenen minimalprogamme zum LED-Blinken an, und wie
> dort Schleifen und funktionsaufrufe verwendet werden. C-Buch von vorn
> nach hinten durcharbeiten könnte auch helfen. Zum anderen sind deine
> Bit-abfragen falsch. Guckst du hier

Das sind meine ersten Anfänge. Einen Main-Programmablauf habe ich schon 
hinbekommen, nun probiere ich mich beim Aufbau von Unterprogrammen.
Die Bit-Abfragen habe ich so aus einem Tutorial entnommen - wie wäre es 
denn richtig?

Danke an alle!
Gast #3321552
Lesenswert?

>Die Bit-Abfragen habe ich so aus einem Tutorial entnommen
Dann sollte man den Tutorial-Schreiber wg. Desinformation mal die 
Leviten lesen.

>Wie wäre es denn richtig?
Steht ausführlich unter obigem Link.
Grundsätzlich geht das so, daß du dir das gesuchte Bit rausmaskierst, 
indem du alle anderen auf 0 setzt und dann guckst, ob das 
übriggebliebene 0 oder nicht 0 ist, z.B. für Bit2 aus deinem Beispiel
if ( ( PIND & 1<<PD2 ) != 0 ) // Wenn Bit2 gesetzt
oder
if ( ( PIND & 1<<PD2 ) == 0 ) // Wenn Bit2 nicht gesetzt

1<<PD2 ist gleichbedeutend zu 0b00000100, da PD2 in io.h mit 2 definiert 
ist. Durch das bitweise UND (&) zwischen PIND und 0b00000100 wird also 
erreicht, im 8bit-Ergebnis des bitwise-& alle Bits bis auf Bit2 
garantiert 0 sind, und Bit2 des Ergebnis ist identisch zu Bit2 aus PIND. 
Und dieses 8bit-Ergebnis kannst du jetzt einfach mit gleich/oder 
ungleich 0 auswerten.

Das Ganze kann man auch für mehr als ein Bit durchführen, dann musst du 
natürlich statt gleich/ungleich 0 auf das konkrete Bit prüfen, Beispiel:
if ( PIND & ( 1 << PD2 | 1 << PD3 ) == 1 << PD3 ) // Nur Bit3 gesetzt?

Gruss, Heinz
OP #3321842
Lesenswert?

Ok - es liegt nicht am Code... ich kann selbst...
1
#include <avr/io.h>
2

3
int main (void) {
4
  while(1) {
5
  }
6
  return 0;
7
}

... nicht programmieren... Komisch, lade ich ein Programm geschrieben 
mit Assembler, läuft alles einwandfrei.
Kann ein µC, wenn er das erste mal mit Assembler programmiert worden 
ist, danach nicht mit C programmiert werden oder was ist hier los :D
Gast #3322683
Lesenswert?

Hi

>Nun, eigentlich nicht - die Bezeichnung des "Play-Knopfes" lautet zwar
>"Start Debugging (F5)", jedoch wird der µC programmiert oder auch
>programmiert. Unter Assembler funktioniert es schließlich auch...

Aber nur wenn ein Debugger vorhanden ist. Und das STK500 ist kein 
Dedugger.

MfG Spess
OP #3322767
Lesenswert?

Also ich muss sagen, da ich weder C noch Assembler kann, und mir das 
daher frei war, welche Sprache ich neu erlerne, und außerdem mit 
Assembler alles funktioniert - habe ich einfach meine Idee in Assembler 
niedergeschrieben.
Hier mache ich auch nichts anderes als auf den Pfeil bzw. F5 zu klicken 
/ drücken, er checkt daraufhin den Code auf Fehler (und spuckt mir dies 
aus bevor er programmiert) und programmiert daraufhin den µC.
#3322791
Lesenswert?

David Schwandt schrieb:
> Hier mache ich auch nichts anderes als auf den Pfeil bzw. F5 zu klicken
> / drücken

Es wäre hilfreich, wenn du wüsstest, was du tust und was für einen 
Erfolg Voraussetzung ist. F5 ist "RUN" und bedeutet, dass das Programm 
im Debugger laufen soll. Du hast keinen Debugger, du hast einen 
Programmieradapter. Also gibt es einen Fehler.

F7 erzeugt dir ein aktuelles HEX File und zeigt dir dabei ggfs die 
Fehler in deinem Programmtext. Wenn alles bis hier hin fehlerfrei ist, 
geht es mit "Tools", "Connect Programmer" dann weiter.
Gast #3323851
Lesenswert?

Hi

>Nur, dass das selbe Spielchen in der Assembler-Sprache (selbes Programm,
>keine anderen Einstellungen etc.), durch drücken von F5 programmiert
>wird. Warum auch immer.

Und was hast du als Debugger eingestellt? Das STK500 kann weder JTAG 
noch DW. Und das sind die Schnittstellen über die bei F5 das Programm in 
den Controller geschoben wird. Bei einem STK500 kannst du nur den 
Simulator benutzen. Und der programmiert keinen AVR. Der 
Fortschrittsbalken der bei F5 erscheint hat nichts mit programmieren zu 
tun.

MfG Spess
Gast #3492956
Lesenswert?

Hallo,
Weiss nicht, ob Du das Problem schon gelöst hast oder nicht ... aber ich 
hatte das selbe Problem und bin auf diesen Thread gestossen, der 
eigentlich nicht viel geholfen hat. Bei mir war die Ursache des Fehlers 
ein falscher ISP clock bzw. war der ISP Clock am STK500 anders 
eingestellt als im Project.

In Tools->Device Programming->Interface Settings
und Projekt
Tool -> ISP Clock

muss die gleiche Frequenz eingestellt sein.

Dann war bei mir der Fehler behoben.

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