Hallo ich hab ein Stk500 mit einem Atmega 8515 wer kann mir sagen wie ich in den Debug modus kommen ???
>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.
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
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.
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 ???
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...
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...
> baud = 3686400/(16*(23+1)); // see datasheed
Für einen RC-Oszillator kannst du die Frequenz aber recht exakt angeben.
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 | }
|
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)
> 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.
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 ?
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
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)
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.
ich machs jetzt genau so und siehe da es klappt !!! hab ein gutes Com Tool und wers hamm will ich gebs hiermit frei
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.