Forum: Mikrocontroller und Digitale Elektronik Debug Modus


von kartoffelsuppe22 (Gast)


Lesenswert?

Hallo ich hab ein Stk500 mit einem Atmega 8515 wer kann mir sagen wie 
ich in den Debug modus kommen ???

von Rahul D. (rahul)


Lesenswert?

>Hallo ich hab ein Stk500 mit einem Atmega 8515 wer kann mir sagen wie
>ich in den Debug modus kommen ???

Mit einem JTAG könnte sowas gehen (sofern der 8515 einen JTAG-Anschluß 
besitzt).
Debugging funktionert sonst nur durch setzen von LEDs, verschicken 
"interessanter" Nachrichten per serieller Schnittstelle oder im 
Simulator.

von Fabian B. (fabs)


Lesenswert?

8515 geht nicht über Jtag... zumindest nicht per JTAG-ICE(2)
dafür bräuchte man ein ICE200 und der emuliert den 8515 ja nur.

Gruß
Fabian

von kartoffelsuppe22 (Gast)


Lesenswert?

Welchen Atmega würde das den gehen und brauch ich noch ein zusatzmodul ?

von Rahul D. (rahul)


Lesenswert?

Was willst du denn machen?
Ich habe zwar im Dienst einen JTAGICE mkII, den brauchte ich aber nicht 
wirklich zum debuggen.
Programmiere von anfang vernünfitg (mit Plan...), und du brauchst nichts 
debugge.

von kartoffelsuppe22 (Gast)


Lesenswert?

Hey danke für den Super Tipp !!!

ich möchte gerne als anfänger meine UART zum laufen bringen und wissen 
warum sie nicht geht.

Code:
baud = 3686400/(16*(23+1));

UBRRH =  (unsigned char)(baud>>8);
UBRRL =  (unsigned char) baud;

UCSRB = (1<<RXEN) | (1<<TXEN);
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

while(!(UCSRA & (1<<UDRE)))
UDR = 'x';

Als Professioneller C++ Entwickler habe ich bisher noch kein Fehlerloses 
Projekt erstellt!!!

mich würde daher interresieren was ich nun brauche um debuggen zu 
können. Ist das jetzt ein Externes Interface, das an den Controler 
angeschlossen wird oder geht das etwa mit den STK 500 ???

von Rahul D. (rahul)


Lesenswert?

Poste mehr Code (ganzes Programm bzw. sinnvolle, compilierbare Stücke), 
dann kann man dir auch helfen.

Als professioneller Nasenbohrer bin ich noch nicht auf Öl gestossen...

von kartoffelsuppe22 (Gast)


Lesenswert?

OK du Nasenbohrer ;-)

Quelltext:

//  __ UART on the 8515 µC ___
//  Date: 03/04/07

/* Include Files */
#include <avr/io.h>

/* Prototypes */

/* Main Function */
int main(void)
{
unsigned int baud;
baud = 3686400/(16*(23+1)); // see datasheed

UBRRH =  (unsigned char)(baud>>8);
UBRRL =  (unsigned char) baud;

UCSRB = (1<<RXEN) | (1<<TXEN);
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

while(!(UCSRA & (1<<UDRE)))
    UDR = 'x';
return 0;
}

Umfeld:

Ich hab weder ein Quarz noch ein TTL Pegel Konverter. Ich hab aber hier 
gelesen das das trozdem gehen kann jedoch nicht sicher ist -->RC 
Oszilator

Prizipell wär ein Debugger für den Anfang ganz hilfreich...

von S. W. (Gast)


Lesenswert?

> baud = 3686400/(16*(23+1)); // see datasheed

Für einen RC-Oszillator kannst du die Frequenz aber recht exakt angeben.

von kartoffelsuppe22 (Gast)


Lesenswert?

Tools -> ProgrammAVR -> Board !!!


kann mir jetzt mal einer Helfen ???

von Stefan (Gast)


Lesenswert?

1
//  ___ UART on the 8515 µC ____
2
//  Date: 03/04/07
3
4
/* Include Files */
5
#include <avr/io.h>
6
7
/* Prototypes */
8
9
/* Main Function */
10
int main(void)
11
{
12
   unsigned int baud;
13
   baud = 3686400UL/(16*(23+1)); // see datasheet
14
15
   UBRRH =  (unsigned char)(baud>>8);
16
   UBRRL =  (unsigned char) baud;
17
18
   UCSRB = (1<<RXEN) | (1<<TXEN);
19
   UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
20
21
   while(1)
22
   {
23
      while(!(UCSRA & (1<<UDRE)))
24
      {
25
         // solange warten bis UART sendebereit ist...
26
         // http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Senden_einzelner_Zeichen
27
      }
28
      UDR = 'x';
29
   }
30
   return 0;
31
}

von Stefan (Gast)


Lesenswert?

Bist du sicher mit den 3.686400 MHz? Wie stehen denn die Fuses des 
Atmega8515?

von Dirk D. (dirkd)


Lesenswert?

Hast Du Dir auch mal das Datenblatt angesehen.

Der 8515 hat kein Debug-Interface (Kein Debug-Wire und auch kein JTAG). 
Also keine Breakpoints, Step by Step execution oder Variablen ansehen.

Du kannst ihn simulieren; aber das war's auch schon. Wie vorher schon 
geschrieben wurde, kannst Du den Chip auch emulieren, brauchst aber 
spezielle HW dafür.

Zu Deinem Problem:

Bist Du sicher, daß Du eine Frequenz von 3,6 MHz hast?

Soweit ich das sehe kann der interne nur 1, 2, 4 oder 8 MHz (+- 1%) 
abhängig von den eingestellten Fuses (Seite 39 im Datenblatt)

von Dirk D. (dirkd)


Lesenswert?

> Tools -> ProgrammAVR -> Board !!!

Was willst Du uns damit sagen?

> kann mir jetzt mal einer Helfen ???

Geht's noch unfreundlicher?

> Als Professioneller C++ Entwickler

Unter professionell verstehe ich etwas anderes.

von kartoffelsuppe22 (Gast)


Lesenswert?

hmm
Danke erst mal für die Antworten...

Nochmal:

Ich bin Blutiger Anfänger, hab jetzt ca. 2 Toturials durchgemacht und 
gemerkt, das ich bei jedem Toturial immer ein anderer µC als ich habe 
verwendet wird. Mein Hauptziel: den µC kennen zu lernen mehr nicht. Fuse 
Bits und Hardware Bausteine sind für mich erst mal ganz weit weg.

Und da bei mir noch nichts auf anhib funktioniert hat, hätte ich gerne 
eine debug möglichkeit. Als Anfänger leg ich mich ja auch noch nicht auf 
eine CPU Architetur fest sondern will einfach nur rumspielen. Da machts 
mir jetzt auch nichst aus wenn einer kommt und sagt nim doch den XXX CPU 
und dann klappt es. Nach der Antwort "Debug braucht man nicht - was 
willst den machen" also der punkt mit der Schnittstelle.


Die Fuses hab ich jetzt mal auf 4MHz gestellt, weil ich "durch reine 
vermutung" gedacht hab das die Frequenz die unter Board angegeben ist 
stimmt. Natürlich hab ich auch den code geändert

läuft es bei dir ?





von Peter D. (peda)


Lesenswert?

kartoffelsuppe22 wrote:

> Fuse
> Bits und Hardware Bausteine sind für mich erst mal ganz weit weg.

Das gehört nunmal beim MC proggen untrennbar dazu.

Setze sie einfach auf externen Takt und nimm die 3,6864MHz des STK500.


> Und da bei mir noch nichts auf anhib funktioniert hat, hätte ich gerne
> eine debug möglichkeit.

Wurde ja schon oben gesagt, daß der Mega8515 das nicht hat.

Der Mega162 ist pinkompatibel und hat JTAG, d.h Du brauchst noch nen 
JTAG-ICE dazu.

Ich hab meine AVRs aber auch ohne sowas zum Laufen gekriegt.

Mach doch einfach mal ne Blink-LED mitm Timer, da sieht man dann 
schnell, ob der CPU-Takt stimmt.
In der Codesammlung isn Beispiel für eine Sekunde.


Peter

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Damit du die Frequenz, die unter Board angegeben ist, nutzen kannst 
musst du die Fusebits auf externen Takt umstellen, da geht kein weg dran 
vorbei. Oder du passt deinen Code so an, dass er auch mit 4 MHz 
funktioniert (Baudrate aussuchen, die bei 4MHz einen geringen fehler 
hat). Außerdem ist der RC Takt relativ ungenau, deswegen ist nicht 
sichergestellt, dass das ganze dann auch wirklich funktioniert.

Aber die Fusebits umzustellen ist mit dem STK500 gar kein problem. 
Einfach unter Fuses --> external clock einstellen und gut ist (Wichtig 
sit, dass der OSCSEL Jumper richtig gesetzt ist, sonst läut der µC 
garnicht/mit dem takt des Quarzes der im sockel steckt)

von Stefan (Gast)


Lesenswert?

Dann kannst du dich vielleicht für den Atmega16 erwärmen, so wie er auch 
hier im AVR-GCC-Tutorial stellenweise benutzt wird.

Der Atmega16 hat ein JTAG Debuginterface. Allerdings brauchst du dann 
noch einen AVR-JTAG-Adapter; das STK500 ist da nicht ausreichend.
http://www.mikrocontroller.net/articles/JTAG#AVR_JTAG

Ansonsten kannst du ja deine Programme im Simulator des AVR Studio gut 
vortesten und dann den soweit entwanzten Code auf den µC brennen.

Du kannst es dir hier im Forum schwer oder einfach machen. Einfach 
machen heisst, Fragen möglichst präzise zu beantworten. Oft reicht ein 
Screenshot. Die Fragen werden nicht aus Böswilligkeit gestellt.

von kartoffelsuppe22 (Gast)


Angehängte Dateien:

Lesenswert?

ich machs jetzt genau so und siehe da es klappt !!!

hab ein gutes Com Tool und wers hamm will ich gebs hiermit frei

von Dirk D. (dirkd)


Lesenswert?

Noch einmal:
Schau bitte ins Datenblatt. Das ist mit das erste was ein Entwickler im 
embedded Bereich machen sollte.

Ich nehme mal Dein Controller befindet sich noch im 
Auslieferungszustand. Dann wird der interne RC auf 1 MHz eingestellt 
sein.

Und noch ein Tipp:

Wenn Du nach so etwas wie Debug Möglichkeiten fragst, sollte Deine Frage 
auch Informationen über den verwendeten Compiler und die 
Entwicklungsumgebung enthalten.

Mit 1MHz wird es übrigens schwer eine vernünftige Baudrate zu finden 
(auch dabei hilft das Datenblatt)

von kartoffelsuppe22 (Gast)


Lesenswert?

Danke für den tipp

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.