Debug Modus

#511845
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.
Gast #511962
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 ???
Gast #511970
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...
Gast #511989
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
}
#511993
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)
Gast #512002
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 ?




#512009
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
Persönliche Seite #512013
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)
Gast #512014
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.
#512020
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)

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