Moin Moin, Ich versuche ein At90CAN128 mit zwei SJA1000 als CAN-Router zu entwickeln. Router daher, weil bestimmte Daten nur an den einen oder anderen SJA1000 weiter geleitet werden sollen. Nun habe ich das Problem, das der AT90CAN an einer Bestimmten Stelle einfach neu startet. Ich vermute, dass ich irgendwo wild im Speicher herumschreibe; ich kenne das zumindest aus "normalen" C-Projekten wobei das OS freundlich ein SIGSEGV schickt und man zumindest weiss woran man ist. Um der Sache wirklich auf den Grund gehen zu können benötige ich wohl ein JTAG Debugger? Der JTAGICE MK3 scheint mir geeignet dafür zu sein. Doch etwas mehr als 100,- EUR sind für mich eine Menge Geld. Auch müsste ich dann wohl das ATMEL Studio nutzen was mir etwas widerstrebt. Ich bin da so ein UNIX Purist und arbeite mit Vi ald IDE. Aber ohne vernünftigen Debugger werde ich nicht weiter kommen. Kurz: Ist der JTAGICE MK3 die richtige Wahl um meinem Problem auf die Schliche zu kommen? Besten dank für Tips! Karsten
>Um der Sache wirklich auf den Grund gehen zu können benötige ich wohl >ein JTAG Debugger? Meistens reicht genaues hinsehen und ein paar printf;)
Moin Holger, Kannst mir glauben, das ich das schon intensiv gemacht habe. Wenn ich z.B. die uart lib entferne gehts wieder. Nur ist damit noch lange nicht nachgewiesen, das das Problem in der uart lib von Peter Fleury ein problem hat. Auch gehts wenn ich den Optimizer ausschalte, aber auch das beseitigt ja nicht die Ursache :-( Danke aber für den Tipp, gruß Karsten
Mach doch erstmal Debug-Ausgaben auf dem CAN um das Problem einzukreisen. Warum eigentlich einen 90CAN und zwei SJA1000? Drei CAN-Busse? Hast Du die SJA1000 an das externe Speicher-Interface gehängt?
Hallo Rudolph, Printf Ausgaben zeigen, dass beim Testen in einer ISR ob ein Buffer mit einer Message vorliegt wahrscheinlich zu diesem Problem führt. Wir die Zeile mit der Zuweisung an *buf auskommentiert gibt es keinen reboot mehr. Dazu muss aber auch ein can_t *buf = NULL; eingefügt werden. Das gleiche erreiche ich aber auch, wenn ich keine debug Meldungen menr nutze ( Herr Heisenberg hat dann zugeschlagen )
1 | ISR(INT0_vect) { |
2 | |
3 | static uint8_t tmp = 0; |
4 | |
5 | can_t *buf = can_buffer_get_dequeue_ptr(&buf_control); |
6 | |
7 | // check if there are any another messages waiting
|
8 | if (buf != NULL) { |
9 | |
10 | can_buffer_dequeue(&buf_control); |
11 | _send_message(buf, SJA1); |
12 | |
13 | } else { |
14 | |
15 | active = 0; |
16 | |
17 | }
|
18 | |
19 | // reset TIE interrupt
|
20 | tmp = (*((uint8_t *) (base[0] + IR))); |
21 | }
|
Ja, leider drei getrennte CAN-Bus. Es ist ja auch ein "router" und in Wahrheit liegt hinter einem SJA1000 noch ein CAN-HUB mit bis zu 8! getrennten CAN-Traceivern. Leider macht die Hardware der angeschlossenen geräte das notwendig, da diese alle einen fest eingebauten Abschlusswiderstand beinhalten. Gruß Karsten
Karsten K. schrieb: > Ist der JTAGICE MK3 die richtige Wahl um meinem Problem auf die Schliche > zu kommen? Ja! Damit arbeitet es sich aus meiner Erfahrung heraus deutlich produktiver. Für professionelles Arbeiten, wo Zeit Geld isst, ist das unverzichtbar. Und 100€ sind noch preiswert. Das Vorgängermodell hat fast 300€ gekostet. Du hättest natürlich auch einfach einen LPC2294HBD144/01 nehmen können. Der 4 CAN Interfaces, und ein FT2232-basiertes OpenOCD-JTAG gibts schon für 20€. Aber wahrscheinlich kennst Du nichts anderes als AVR. fchk
Nun unter Unix/Linux bietet sich ja openocd an. Läuft bei mir mit einme jtag Wiggler Nachbau auf einem Debian System mit par-Port bestens. Und es ist eine Kostengünstige alternative, gibt es bei ebay bereits für 9-12 euro.
Hallo Frank, O.K. dann investiere ich das Geld für den JTAG Debugger. Nur weil ich mich ein wenig mit AVR auskenne bedeutet das ja nicht, das ich nicht mit anderen Mikrocontrollern arbeiten wollte. Jedoch ist das ja Hobby und LQFP144 ( SOT486-1 ) Gehäuse sind für mich eindeutig nicht mehr handelbar. Die Kosten für eine Entwicklungsumgebung für einen LPC2294 kämen nochmals hinzu. Es ist aber ein sehr interessanter Chip! Danke für den Tipp! Gruß Karsten
Karsten K. schrieb: > mehr handelbar. Die Kosten für eine Entwicklungsumgebung für einen > LPC2294 kämen nochmals hinzu. Du möchtest für einen gcc und einen gdb Geld bezahlen? http://www.emdebian.org/about/ Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144 auch. Sind halt ein paar mehr Pins. fchk
Frank K. schrieb: > Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144 > auch. Sind halt ein paar mehr Pins. 0,5 mm Pitch sind aber schon was anderes als 0,8 mm.
Ich habe gerade den hier gefunden bei Atmel: http://www.atmel.com/tools/atatmel-ice.aspx?tab=overview Programming and on-chip debugging of all Atmel AVR 32-bit MCUs on both JTAG and aWire interfaces Programming and on-chip debugging of all Atmel AVR XMEGA® family devices on both JTAG and PDI 2-wire interfaces JTAG and SPI programming and debugging of all Atmel AVR 8-bit MCUs with OCD support on either JTAG or debugWIRE interfaces Programming and debugging of all Atmel SAM ARM Cortex-M based MCUs on both SWD and JTAG interfaces Programming of all Atmel tinyAVR® 8-bit MCUs with support for the TPI interface http://de.farnell.com/jsp/displayProduct.jsp?sku=2407171&action=view&CMP=GRHS-1000082 http://de.farnell.com/jsp/displayProduct.jsp?sku=2407172&action=view&CMP=GRHS-1000082 So richtig Infos gibt es noch nicht dazu, vielleicht im Studio. Die billigere Variante könnte wie der Dragon ohne Gehäuse sein, die teurere Version kostet bei Farnell 47,25 Euro plus Märchensteuer. Nett.
Moin Frank, Nun, TQFP44 mit 0.8pitch ging gerade noch so von Hand. Den AT90CAN128 habe ich wohlweißlich als Header-Board von Olimex. Gleichartiges für den LPC2294 kostet dort ca. 80,- EUR. Dann habe ich aber noch keinen JTAG Debugger :-( Also eine Platine für ein 0.5Pitch 144 Pin selber herstellen und löten ist einfach ausserhalb meiner Fertigkeiten. Ich werde ja leider nicht besser programmieren können nur weil ich einen tolleren Mikrocontroller einsetze.Ich werde also versuchen meinen Fehler mit dem JTAG Debugger zu finden, daraus lernen und weiter machen. @Rudolph Hei, Danke für den Link. Ich versuche da mal etwas schlauer draus zu werden ob es das ist was ich benötige Einen Schönen Restsonntag noch :-) Karsten
Karsten K. schrieb: > Hei, Danke für den Link. Ich versuche da mal etwas schlauer draus zu > werden ob es das ist was ich benötige Dieses Teil ist noch ganz frisch, das wirst Du anfangs nur und ausschließlich in der ganz aktuellen AVRStudio Version einsetzen können. Den JTAGice3 kannst Du auch mit avrdude und avarice benutzen. fchk
Karsten K. schrieb: > Also eine Platine für ein 0.5Pitch 144 Pin selber herstellen und löten > ist einfach ausserhalb meiner Fertigkeiten. Platinen mache ich schon lange nicht mehr selber, die Zeiten sind vorbei. Es gibt genügend Fertiger, wo Du Dein .brd oder Dein Gerber hochlädst und für nicht allzu viel Geld ein professionell gefertigtes Board zurück bekommst, mit Lötstopplack, Durchkontaktierungen und wenn es sein muss auch mehr als zwei Lagen. Dann sind mit etwas Übung und dem richtigen Flussmittel (Gel aus der Spritze) auch 0.5mm kein Problem. fchk
Rudolph schrieb: > Frank K. schrieb: >> Und wenn Du ein TQFP64 löten kannst, kannst Du das bei einem TQFP144 >> auch. Sind halt ein paar mehr Pins. > > 0,5 mm Pitch sind aber schon was anderes als 0,8 mm. naja, der große Sprung ist vom 1,27-Raster auf die 0,8mm, der Rest ist nicht mehr so heikel gutes Werkzeug ist für beide nötig (Lötkolben, Flußmittel, Lötsauglitze, Lupe etc) Grüße MiWi
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.