Hallo, kann mir jemand kurz den Unterschied zwischen den Bauteilen PCA 82C250 und MCP 2515-I/P erklären? Das eine ist ein Bustreiber/Empfänger und das andere ein CAN-Bus Controller - so stehts im Wiki. Nur was macht ein Bustreiber und was ein Controller? Ist der Controller für die Spannungsversorgung und den "Master" zuständig und der Bustreiber für die Sensoren/Aktoren? Oder wie habe ich das zu verstehen? Wenn ich einen AVR habe, der CAN nicht von Haus aus unterstützt - welchen der oben genannten Chips brauche ich? Oder brauche ich beide? Und mit welcher Busspannung arbeitet CAN? Habe ich richtig verstanden, dass ich diese selbst festlegen kann? Also z.B. 0V=Low, 12V=High? Bin ein wenig verwirrt, und bitte um Aufklärung ;)
der Bustreiber macht nichts anderes als die Physikalische Ebene. Du könntest stattdessen auch einen LWL-Treiber (sprich Lichttransceiver) nehmen. Der 82C250 macht aus dem TTL-kompatiblen Pegel einen symmetrisches Signal. Man könnte ihn mit dem MAX232 vergleichen vom Prinzip her; von den elektrischen Eigenschaften natürlich nicht. Der MCP2515 organisiert die Kommunikation auf dem Bus. im Prinzip müsste es möglich sein, MCPs untereinander ohne 82C250 zu verbinden (hab ich nicht ausprobiert, weiß auch nicht ob das wirklich gehen kann...). Der MCP kümmert sich um Fehler auf dem Bus und was da noch so alles passieren kann (natürlich auch Sachen die passieren sollen, wie Datenübermittlung). Um zwei CAN-Knoten aufzubauen brauchst du 2 MCP2515 und 2 PCA82C250. Und natürlich jeweils noch einen µC, der die MCPs ansteuert.
Ah verstehe - ich brauche beide ICs und wer Master spielt, wird per Software ausgewählt, da ja auch mehrere Master möglich sind...!? An den Mikrocontroller werden ja normalerweise keine größeren Ansprüche gestellt oder? Die CAN-Bausteine verbinde ich mit einem normalen digitalen Aus-/Eingang des µCs, richtig? Oder müssen das spezielle Pins sein? Ich dachte an den Attiny 2313, der ist relativ günstig und sollte vollkommen langen, wenn ein Node nur ein paar Schalter / Ausgänge schalten können soll - ansonsten kann ich ja noch per Schieberegister erweitern... oder spricht was gegen den IC?
Hallo, der MCP2515 ist ein SPI-CAN-Controller, daher sollte dein µC einen SPI-Mastern-Interface haben. Theor. kannst du dass auch in Software konventionell abbilden, mach aber meiner ansicht nach nicht viel Freude. Die Alternative dazu ist zum Beispiel ein SJA1000 (derzeit der am meisten verwendete CAN-Controller). Der braucht zwar ein paar Leitungen mehr, dafür bereitet er weniger Probleme im Betrieb und du findest ein Vielfaches an Doku und Beispielen im Netz. Die CAN-Transceiver können auch diskret aufgebaut werden. Dies wurde in der Anfangszeit des CAN-Busses für den sogenannten Low-Speed-CAN auch recht häufig getan. Eine andere Variante ist es einen RS485 Transceiver wie den 75176 für den CAN-Bus zu 'missbrauchen'. Inzwíschen gibt es von Philips auch sogenannte Singe-Wire-Transceiver mit denen der CAN als Single-Wire-Bus betrieben werden kann, interessant z.B. für einen Hausbus Der einfachste und günsigste Weg wird trotzdem ein Standard-CAN-Transceiver wie der 82C251 bzw. MCP2551 sein. Gruss, Peter
Wie Peter schon schrieb: SPI ist von Vorteil. Guck mal bei microchip.com. Da gibt es eine Application Note mit dem MCP2515 und einem Achtbein-PIC. Mit dem ASM-Listing lässt sich die Initialisierung ziemlich gut nachvollziehen. Wenn du noch weniger Chips pro Platine haben willst, kommst du um einen µC mit CAN-Kern nicht herum (ist aber wohl auch nicht angedacht...) Ich hatte mir mal einen CAN-RS232-Umsetzer gebaut. Er bestand aus einem PCA82C250, einem MCP2515, einem MAX232 und einem ATMega32, der viel zu groß war. Das lag aber daran, dass der Umsetzer nur eine Teilfunktion einer grösseren Platine war. Die gröösere Platine hatte neben den beiden Schnittstellen noch ne Menge Ein- und Ausgänge. Leider kam es nie über das Entwicklungsstadium hinaus, weil der Aufbau überdimensioniert war. Inzwischen steuern 2 ATMega32 die Anlage (und nicht mehr 5 CAN-Knoten...)
Also eins vorweg - die Anzahl der ICs ist eher nebensächlich, Platz sollte nicht das Problem sein, und falls es doch mal soweit kommt, kann man immer noch eine andere Lösung suchen. Ich möchte die Funktionsweise von CAN erlernen und diesen dann auch bei mir einsetzen - Hauptsache ist erst mal dass es geht... die Feinheiten kann man später noch bearbeiten. Möglichst günstig sollte es obendrein sein - ich würde gerne mehrere Knoten in den Bus einbauen, wenn die CAN-Bauteile für jeden schon 20 EUR kosten, verdrahte ich das lieber herkömmlich... Den einzigen CAN-fähigen Controller den ich bei Reichelt finde ist ein AT90CAN128 für 16,10 EUR - eindeutig zu viel. Mein Ziel ist es, kleinere Baugruppen an den Bus anzubinden, beispielsweise 4 Lüfter, die ich getrennt voneinander einschalten möchte. Oder 3 Temperatursensoren abfragen, oder ein paar Schalter. Normalerweise nichts allzu aufwändiges, deswegen sollten es möglichst günstige Komponenten sein - wenn es komplexer wird, darf es auch gern mal ein besserer IC sein, aber ich brauche keinen ATmega 128 für 4 Schalter ;) Deswegen dachte ich mir, einen Attiny2313 zu nehmen, den kann ich mit meinem ISP-Adapter programmieren und der kostet nicht die Welt. Ist der aber nicht so geeignet, wegen SPI? Ich dachte eigentlich das hat er (heisst USI - Universal Serial Interface), oder ist das nicht das was ich suche? Was gäbe es denn alternativ für Empfehlungen? Einfach zu beschaffen sollten die Bauteile schon sein (möglichst Reichelt) und am liebsten AVR oder MSP430 - dafür hab ich die ISP Programmer daheim... und natürlich günstig. Später soll es vielleicht mal wachsen und dann ist beispielsweise nur ein Taster an den Bus zu bringen, das sollte dann von den Kosten her aber trotzdem bezahlbar bleiben...
Der Attiny2313 kann SPI. Laut Datenblatt. Ausprobiert habe ich es noch nicht. Habe allerdings genau das gleiche vor. ATtiny2313 mit MCP2515. Weiss aber noch nicht wann ich dazu komme. Wenn Du möchtest kannst Du ja mal berichten wie es bei Dir läuft. Grüße Andreas
Mach ich gern, bin schon ganz geil auf CAN ;) Nachdem wir das bald in der Uni mit einem C164 (der hat CAN schon drin) besprechen, hat mich das Thema interessiert und jetzt möchte ich das hier auch nutzen, damit spare ich mir Unmengen an Kabelziehereien... Nur das mit dem Buspegel ist mir noch nicht ganz klar...
Brauchst Du Dich nicht drum zu kümmern. Macht der: PCA82C250 hier. Nur alle parallel dran hängen und die Abschlusswiderstände nicht vergessen. Habe ich gerade mit dem SJA1000 und dem PCA82C250 gemacht. Ging einwandfrei. Als nächstes will ich das mit dem MCP2515 machen. Habe aber im Moment noch keine Zeit dazu. Grüße Andreas
Hallo, eine weitere Alternative um kleine CAN-Knoten zu realiseren sind die PIC 18F4x8. Dort ist der CAN-Controller schon auf dem CHIP realisert. Mangels PIC18-Programmer habe ich diese jedoch noch nicht eingesetzt. Auf meiner Wunschliste bei Atmel stehet schon lange ein kleiner ATTiny Controller mit CAN, um einfache CAN-Knoten aufzubauen. Leider scheint der Atmel-Weihnachtsmann den Wunschzettel nicht zu lesen. Gruss, Peter
mir wäre es ja schon recht, wenn mal die kleineren CAN32/CAN64 kommen würden (so sie denn billiger sind), den 128er habe ich noch nie nennenswert füllen können :-)
Ausserdem ist ja noch nicht Weihnachten ;) Aber mit über 16 EUR ist der von Reichelt mir viel zu teuer - totaler Overkill, den Speicher brauch ich ned... Das SPI Interface wird aber doch auch vom ISP-Programmer verwendet oder? Aber es geht dass ich den 2515 per Chip Select deaktiviere, dann brauch ich die Pins nicht abkoppeln, richtig? Und wenn ich die Reset-Leitung des Attiny dafür verwende, brauch ich im Prinzip nicht mal eine aufwändige Beschaltung, oder? Im Normalfall wird doch der Reset-Pin des AVR durch einen Pullup auf High gezogen, da der Reset-Eingang invertiert ist, wird er dadurch auf Normalbetrieb geschalten. Wenn ich den Chip Select des 2515 mit dem Reset-Pin des AVR verbinde, sind beide im Normalbetrieb auf High, sobald der ISP-Programmer den Reset auf Low zieht, wird der Chip Select auch auf Low gezogen und der 2515 somit deaktiviert. Stimmt mein Gedankenexperiment oder hab ich irgendwo einen Denkfehler drin?
Wenn recht erinnert, ist der MCP2515 ebenfalls im "Reset" wenn Pin "high". Dann koennte man auch beide "Resets" verbinden. Atmel empfiehlt den SPI Bus bei Verwendung der ISP/SPI-Programmierschnittstelle ueber Widerstaenden an die weiteren Busteilnehmer zu binden (Hardware Design AppNote bei atmel.com). Schaltplan meines - sicher nicht perfekten aber funktionierenden - Aufbaus: http://www.siwawi.arubi.uni-kl.de/avr_projects/can/index.html. Hatte damit bisher keine Probleme beim "flashen".
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.