Themen:

AVR, avr-gcc, CAN, CPLD, Elektronik, Mikrocontroller, MSP430, PIC, Roboter, Schaltungen, Sensoren, Software, Testboards

SJA1000 Testboard

Tags: Elektronik, AVR, CAN, Testboards
Stand: 7. September 2008, 16:49
13 Kommentar(e)

SJA1000 Testboard

Der SJA1000 hängt am externen Bus Interface eines ATMega162 und kann so Memory-Mapped in den oberen RAM-Bereich des AVRs “eingeblendet” werden.

Der SJA1000-Teil der canlib wurde entsprechend auch mit diesem Testboard entwickelt. Neben dem Memory-Mapped-Modus gibt es darin auch einen zweiten Modus in dem Adressierung “per Hand” erledigt wird, dort kann der SJA1000 dann auch an beliebige Ports angeschlossen werden.

Features

Schaltplan und Platinenlayout

Downloads:

sja1000_testboard.zip [299.61 kB]
sja1000_demo.zip [23.53 kB]

Zum Anfang

Kommentare

# JJ meinte am 17. Januar 2009, 22:26 dazu:

Hallo zusammen, habe mir das Board teilweise zusammengebastelt (atmega162+sja1000+PCA82C250). Ich kann die Dioden ansteuern, die CAN-Kommunikation mit can-lib konnte ich aber bisher nicht zum Laufen bringen. Ich ?verschicke? CAN-Botschaften, auf dem CAN finde ich sie aber nicht wieder?

Jetzt weiss ich nicht ob es an der SW oder HW liegt. Wäre es möglich ein Demo auch für dieses Bord hier zu posten, um sowas schnell überprüfen zu können?

Ich habe vor ein CAN-Gateway zu basteln, mit einem atmega162 und zwei (oder mehr) sja1000. Es scheint mir nicht so schwierig dafür die can-lib zu erweitern, wenn es noch keiner gemacht hat?

# Fabian Greif meinte am 18. Januar 2009, 20:38 dazu:

Hi,

Wäre es möglich ein Demo auch für dieses Bord hier zu posten, um sowas schnell überprüfen zu können?

Ich kann am Dienstag mal ein getestetes Beispiel hochladen.

Es scheint mir nicht so schwierig dafür die can-lib zu erweitern, wenn es noch keiner gemacht hat?

Sollte auf jeden Fall machbar sein. Ich würde mich freuen wenn du mir den Code dann zukommen lassen könntest, ich würde ihn dann in die canlib übernehmen. Ich wollte sowas auch schon länger mal angehen, aber irgendwie kamen immer andere Sachen dazwischen ;-)

# JJ meinte am 18. Januar 2009, 21:34 dazu:

Danke für die schnelle Antwort. Ich bin inzwischen weitergekommen und kann CAN Botschaften verschicken. Allerdings nur im nicht MEMORY_MAPPED Modus (wo so viele “UNGETESTET” Warnungen kommen). Woran könnte es liegen?

Und noch ein Punkt: In der Application note zu SJA1000 (AN97076) wird für alle neuen Applikationen empfohlen, RX1 auf GND zu legen und CBP auf 1 (siehe http://www.nxp.com/acrobat_download/applicationnotes/AN97076.pdf). Du hast RX1 auf 2,5V und dementsprechend CBP auf 0. Ich habe es erstmal von dir übernommen, frage mich aber was der Grund ist…

# Fabian Greif meinte am 18. Januar 2009, 22:41 dazu:

Woran könnte es liegen?

Hast du das externe Speicher Interface aktiviert?

// release PC2-PC7
SFIOR = (1<<XMM2)|(1<<XMM1);

// enable external-memory, one wait-state
MCUCR |= (1<<SRE)|(SRW10);
EMCUCR = (SRW00);

Ich habe es erstmal von dir übernommen, frage mich aber was der Grund ist?

Ich wiederum hatte es von einen anderen Schaltplan übernommen. Du hast sicherlich recht das die andere Variante sinnvoller ist.

# JJ meinte am 21. Januar 2009, 19:13 dazu:

Vielen Dank für die Unterstützung. Mit Deiner Hilfe habe ich es zum Laufen gekriegt. Als nächste habe ich vor mehrere SJA?s anzusteuern. Wenn ich es richtig im Code gesehen habe, wertet die can-lib keine Receive-Interrupts aus. Deshalb möchte ich ausprobieren zwei SJA?s parallel an den Controller anzuschließen und über die CS Leitungen anzusteuern.

Preudocode:

select_chip(0);
can_init(...);
select_chip(1);
can_init(...);

Dafür muss man in der Library erstmal nichts ändern. Eine schönere Lösung wäre über die Interrupts, aber ich versuche erstmal die einfachere Variante.

# Fabian Greif meinte am 1. Februar 2009, 15:16 dazu:

Wäre es möglich ein Demo auch für dieses Bord hier zu posten, um sowas schnell überprüfen zu können?

Hat jetzt leider etwas länger gedauert, aber jetzt gibt es auch ein getestetes Demo-Programm für das Testboard (siehe SJA1000 Demo). Viel Spaß damit.

Grüße Fabian

# JJ meinte am 18. Februar 2009, 21:18 dazu:

Super, dass es mit dem Demo geklappt hat. Inzwischen habe ich zwei SJA?s an dem AVR hängen. Die Ansteuerung über die CS Leitungen klappt wunderbar. Ich werde es noch mit mehreren ausprobieren.

Eine Frage habe ich noch. Warum hast Du gerade den ATMega162 genommen? Würde nicht ein kleinerer AVR auch reichen?

# Fabian Greif meinte am 19. Februar 2009, 10:06 dazu:

Der ATMega162 ist der einzige AVR in DIP mit externem Speicherinterface. Daher habe ich ihn für das Board hier verwendet.

Wenn man aber anstelle des Memory-Mapped-Modus den IO-Modus verwendet (MEMORY_MAPPED nicht definiert) sollte sich fast jeder AVR nutzen lassen.

Grüße Fabian

# JJ meinte am 19. Februar 2009, 22:22 dazu:

Alles klar, das ist mir nicht aufgefallen. Ich habe noch eine Frage zu der INT Leitung von dem SJA: Warum führt sie auf INT2 von dem AVR? INT2 reagiert auf Flanken und INT von dem SJA ist low-aktiv. Warum nimmst Du nicht INT0 oder INT1 von dem AVR?

# Fabian Greif meinte am 22. Februar 2009, 10:56 dazu:

Wenn ich mich recht erinnere hatte ich das damals nicht größer durchdacht, INT2 war einfach der nächste freie Pin.

Du hast aber vollkommen recht, wenn man den SJA1000 im Interrupt auswerten will dann ist es wesentlich sinnvoller die INT Leitung an INT0 oder INT1 zu legen.

Grüße Fabian

# bhairav tailor meinte am 10. Juli 2010, 18:13 dazu:

Dear Sir, I go through your project and found its very intresting. but i am going to little difference. in my circuit i have interface SJA1000 to Controller C167CR ( Infenion ). now i want to programming SJA1000 from AD0 to AD7. i want to Pelican Mode so i can take its maximum advantegs. and as per my required i want LOW signal as a output for pin TX0 from SJA1000. Sir will you plase tell me hows i interface SJA1000 with any Micro controller. will you please send me programme for that ?

# Nic meinte am 28. März 2012, 12:02 dazu:

Hi, bin neu hier darum erst mal ein paar fragen, gibt es ein Anfänger Tutorium für C/C++ für die CAN Programmierung? Falls ja könnt ihr mir einen Link zum Tutorium posten und die benötigte Hardware vorschlagen, ich hab gesehen das es hier auch einen Shop gibt den würde ich dann benutzen. Also ich erwarte nicht große Sprünge sonder eher wie gesagt erst mal die Grundlagen und dann das ansprechen und Signal senden über den BUS? Besten Dank Nic

# Fabian Greif meinte am 19. März 2013, 11:09 dazu:

Kommentare wegen zu viel Spam geschlossen! Weitere Fragen bitte direkt per E-Mail an mich.

Grüße Fabian