Hallo, Ich möchte einen Hausbus konzipieren und hatte eigentlich CAN dafür prädestiniert. Allerdings würde ich gerne auf ein µC zurückgreifen, der CAN von sich aus beherrscht, um nicht noch ein SPI/CAN-Controller zu verbauen. Rein vom Platz und auch von den Kosten her gesehen. Natürlich gibt es auch µC's mit integrierten Controller - ABER - meist nur in sehr großer Bauform - also ab 44 Pins aufwärts. Da meine Frage, ob es nicht auch ein µC mit Can-Controller gibt, der so wenig Pins wie möglich hat? Also ab SOIC8 bis SOIC14. Gibt es so etwas überhaupt? André
Nein, ich kenne keine MC mit CAN mit SOCI8 oder 14. Ansonsten solltest Du die Suche im Forum verwenden.
Schau dir mal den LPC11C00 an, der hat nicht nur den CAN Controller sondern auch noch den Transceiver integriert. Hat zwar auch 48 Pins, aber du sparst den 2. IC. http://www.nxp.com/products/microcontrollers/product_series/lpc1100/series/LPC11C00.html#overview Ansonsten gäbe es noch ein paar STM32 im LQFP32, TSSOP20, WLCSP36 nur mit CAN-Controller, bemühe mal die parametrische Suche.
PICs mit CAN-Controller gibts ab 28 Pins aufwärts. 8 Bit: empfohlen: PIC18F26K80 Serie, alles andere sind sehr alte PICs dsPIC: dsPIC33EV256GM102, 5V-Chip (die 5V brauchst Du ohnehin für den Transceiver), 70 MHz; oder dsPIC33FJ64GP802, 3.3V Chip, 40 MHz Transceiver: für 5V-Controller: MCP2561, Single Supply; hat bessere Daten als der alte MCP2551 für 3.3V-Controller: MCP2562, Dual Supply (5V für den Bus, 3.3V für IO) Der Transceiver ist IMMER ein separater Chip; selbst beim LPC11C24 ist es ein separates Siliziumplättchen, das zusammen mit dem Prozessor eingegossen wird. Wenn etwas kaputt geht, ist es der Transceiver, und ein SO08 ist einfacher zu tauschen als ein TQFP48. Ist so meine Erfahrung. fchk
Canni schrieb: > Nein, ich kenne keine MC mit CAN mit SOCI8 oder 14. Schade Programmierer schrieb: > Schau dir mal den LPC11C00 an, der hat nicht nur den CAN Controller > sondern auch noch den Transceiver integriert. Hat zwar auch 48 Pins, > aber du sparst den 2. IC. Genau das ist mein Problem..... zu viele Pins Programmierer schrieb: > Ansonsten gäbe es noch ein paar STM32 im LQFP32, TSSOP20, WLCSP36 nur > mit CAN-Controller, bemühe mal die parametrische Suche. Guter Tipp... Parametrische Suche ergab bei mir den : STM32F042x im TSSOP20 - Gehäuse - schön klein .... Dann muss ich nur noch lernen diesen µC in Assembler zu programmieren.... :-/ Frank K. schrieb: > 8 Bit: empfohlen: PIC18F26K80 Serie Den schaue ich mir auch mal an..... Danke euch allen......
André M. schrieb: > Dann muss ich nur noch lernen diesen µC in Assembler zu > programmieren.... :-/ Wenn du es eh lernen musst: Lern C :D
Dominik S. schrieb: > Wenn du es eh lernen musst: Lern C :D Ich bin Assembler-Fetischist...... Manche nennen mich auch Masochisten... ;-)
Dann wundert es mich aber, daß du CAN nimmst. Ich hätte dann z.B. RS-485 mit eigenem Protokoll erwartet... ;-)
Frank K. schrieb: > PIC18F26K80 Serie Die habe ich auch verwendet. Die laufen mit 5V wie die meisten Transceiver auch. Und Du bist flexibel. Wenn ein Knoten mal mehr IOs braucht gibts die Familie mit bis zu 64 Pins. Das Innenleben ist weitgehend identisch, so dass Du Funktionen für unterschiedliche Controller nutzen kannst.
Lutz schrieb: > Dann wundert es mich aber, daß du CAN nimmst. Ich hätte dann z.B. RS-485 > mit eigenem Protokoll erwartet... ;-) Habe ich auch dran gedacht..... Ich glaub das mach ich auch.... :-)
André M. schrieb: > Dominik S. schrieb: >> Wenn du es eh lernen musst: Lern C :D > > Ich bin Assembler-Fetischist...... > Manche nennen mich auch Masochisten... ;-) Das bist Du ja bei PIC18 an der richtigen Adresse... fchk
Frank K. schrieb: >> Ich bin Assembler-Fetischist...... >> Manche nennen mich auch Masochisten... ;-) > > Das bist Du ja bei PIC18 an der richtigen Adresse... ... und gut aufgestellt für C!
Wegen Grössen und Pinzahl: Du brauchst auf jeden Fall einen externen Quarz, da der CAN-Bus recht empfindlich auf Abweichungen in der Taktrate reagiert. Der interne Oszillator funktioniert nur wenn Du Glück hast genau genug, und ist temperaturempfindlich. Über die OSCTUNE-Register lässt sich der zwar Nachreglen, wenn Du eine Zeitreferenz hast (kann sogar ein Signal via CAN sein, so dass Du dann PLL-m$ssig "einlocken" kannst, allerdings nur wenn Du bereits korrekten Empfang hast). Das ist aber alles recht mühsam. Wegen Transceiver: Schau mal den ISO1050 an, der ist noch galvanisch isoliert.
Quarz ist auf jeden Fall sinnvoll. Ein Resonator würde auch noch gehen. Von Microchip gibts ne Appnote wo der Zusammenhang von Toleranz, Bitrate und Leitungslänge erklärt ist. Ich bin aber auch auf Nummer sicher gegangen und habe einen Quarz genommen.
user schrieb: > Wegen Transceiver: Schau mal den ISO1050 an, der ist noch galvanisch > isoliert. Den habe ich sogar noch zu hause..... Bad U. schrieb: > Ich bin aber auch auf Nummer sicher gegangen und habe einen Quarz > genommen. Sicher ist sicher. .... Aber ich glaube ich nehme dann doch nen 485Bus.... Weniger Hardware und alles andere mach ich per Software.........
Jetzt hast Du noch alle Freiheiten. Ich wollte mich schon immer mal mit CAN beschäftigen und hab das dann zum Anlass genommen.
André M. schrieb: > Aber ich glaube ich nehme dann doch nen 485Bus.... Und dafür gibt es µCs mit integriertem Treiber?
André M. schrieb: > > Aber ich glaube ich nehme dann doch nen 485Bus.... > > Weniger Hardware und alles andere mach ich per Software......... Noch weniger? (siehe Bilder) Der Unterschied zwischen CAN und RS485 wäre nur der andere Transceiver. Ansonsten ist der Hardwareaufwand gleich. Und: Vieles, was der CAN-Controller in Hardware macht, musst Du bei RS485 selber in Software realisieren. fchk
Frank K. schrieb: > Der Unterschied zwischen CAN und RS485 wäre nur der andere Transceiver. > Ansonsten ist der Hardwareaufwand gleich. Wobei ich dann lieber auf CAN Transceiver zurückgreifen würden - die sind günstiger und dazu nimmt der Transceiver es problemlos hin, wenn zwei Teilnehmer gleichzeitig versuchen auf den Bus zu schreiben, Stichwort: Arbitrierung. Weiterer Vorteil, sollte es dann doch nochmal CAN werden, kann man das ganze notfalls in Software nachrüsten - wobei ich das nicht wirklich freiwillig machen würde!
Frank K. schrieb: > Noch weniger? (siehe Bilder) Ja...... aber das ist halt ein PIC und kein AVR...... Frank K. schrieb: > Und: Vieles, was der CAN-Controller in Hardware macht, musst Du bei > RS485 selber in Software realisieren. Das ist halt der größte Nachteil bei 485 bzw. Vorteil bei CAN...
Es war auch meine Beobachtung damals, dass CAN und AVR nicht die ideale Kombination ist. Und ich verstehe auch, dass wenn man mal eine Familie kennt und das Equipment hat nicht gerne nochmal von vorne anfängt. Obwohl es ja nicht ganz von vorne ist, wenn man mal mit uCs gearbeitet hat. Da kommts dann halt sehr auf die persönlichen Prioritäten an.
Da ich allerdings nur Assembler kann tu ich mir mir einem Wechsel schwer.... Der Wechsel von der 68000 Familie auf AVR war schon eine gewaltige Umstellung für mich. ....
Assembler habe ich glaub ich seit der Lehre nicht mehr gemacht. Aber ich glaube auch, dass der Umstieg schwieriger ist, je hardwarenäher man programmiert. Schlag einfach den Weg ein, der Dir am besten erscheint und für Dich am reizvollsten ist. Das wichtigste ist ja der Spaß etwas neues zu machen. Ich habe mir hier auch viel zu dem Thema durchgelesen. Und es gibt hier wohl genausoviele, die ihren Bus mit RS485 wie mit CAN aufgebaut haben. Das ist sicher kein no-go. Sogar I2C scheint bei einigen gut zu funktionieren. Ich nutze I2C zwar auch gerne, aber als Hausbus hätte ich mir das nicht ausgesucht.
André M. schrieb: > Der Wechsel von der 68000 Familie auf AVR war schon eine gewaltige > Umstellung für mich. .... Die kleinsten 8-Bit AVR mit CAN die mir jetzt in den Sinn kommen sind ATMega16M1, ATMega32M1 und ATMega64M1, die gibt es in TQFP-32. Je nach Bezugsquelle ist man dann aber schon mit 4€/Controller dabei.
Bad U. schrieb: > Aber ich glaube auch, dass der Umstieg schwieriger ist, je > hardwarenäher man programmiert. Das kann ich bestätigen. ... Bad U. schrieb: > Das wichtigste ist ja der Spaß Genau Bad U. schrieb: > Sogar I2C scheint bei einigen gut zu funktionieren. I2C benutze ich auch gerne...allerdings nur innerhalb einer Platine.... Daniel H. schrieb: > Je nach Bezugsquelle ist man dann aber schon mit 4€/Controller dabei. Kannst du mir eine Bezugsquelle, die natürlich auch günstig ist, empfehlen?
André M. schrieb: > Bad U. schrieb: >> Das wichtigste ist ja der Spaß > > Genau Probleme wirst Du immer haben. Egal welcher Controller und welcher Bus. Wenns dann kein Spaß ist, wirds ernst ;) Daniel H. schrieb: > Die kleinsten 8-Bit AVR mit CAN die mir jetzt in den Sinn kommen sind > ATMega16M1, ATMega32M1 und ATMega64M1, Ich hab grad mal schnell oberflächlich bei Atmel geschaut. Wenn ich CAN auswähle wird mit kein Atmega angezeigt. Aber wie gesagt, nur schnell reingeklickt. Zu Anfang hatte ich inensiv gesucht. Da waren nur die AT90CAN verfügbar. Und bei einem Preis von ca. 7€
André M. schrieb: > I2C benutze ich auch gerne...allerdings nur innerhalb einer Platine.... Ist bei mir auch so. Ist halt immer eine Gefühlssache, und was man halt so kennt :)
:
Bearbeitet durch User
André M. schrieb: > Kannst du mir eine Bezugsquelle, die natürlich auch günstig ist, > empfehlen Mouser oder Digikey, dort kostet der Atmega16M1 etwa 4€. Allerdings zahlst du bei weniger als 65€ Bestellwert 20€ Versand. Eine Option wäre sich an eine Sammelbestellung anzuhängen. Bad U. schrieb: > Ich hab grad mal schnell oberflächlich bei Atmel geschaut. Wenn ich CAN > auswähle wird mit kein Atmega angezeigt. Aber wie gesagt, nur schnell > reingeklickt. > Zu Anfang hatte ich inensiv gesucht. Da waren nur die AT90CAN verfügbar. > Und bei einem Preis von ca. 7€ Ich hoffe der folgende Link funktioniert, der sollte in der parametrischen Suche von Atmel auch die AtmegaXXM1 aufführen: http://www.atmel.com/v2pfresults.aspx#%28actives:!%288238,8394,8362,8282,8431,8300,8358,8392,8378,8445,8236,8449,8474,8248,8264,8447,8256,8254,8286,8462,8429,8458,8466,8400,8302,8278%29,data:%28area:%27%27,category:%2734864%27,pm:!%28%28i:8238,v:!%280,18%29%29,%28i:8394,v:!%280,26%29%29,%28i:8362,v:!%282,45%29%29,%28i:8282,v:!%285%29%29,%28i:8431,v:!%281,39%29%29,%28i:8300,v:!%281,9%29%29,%28i:8358,v:!%282,74%29%29,%28i:8392,v:!%280,1%29%29,%28i:8378,v:!n%29,%28i:8445,v:!%281,4,5,6,7,9%29%29,%28i:8236,v:!%280,35%29%29,%28i:8449,v:!%281,11%29%29,%28i:8474,v:!%280%29%29,%28i:8248,v:!%280,1%29%29,%28i:8264,v:!%280,5%29%29,%28i:8447,v:!%280,1%29%29,%28i:8256,v:!%281,2,3,4%29%29,%28i:8254,v:!%282,16%29%29,%28i:8286,v:!%280,3%29%29,%28i:8462,v:!%280,8%29%29,%28i:8429,v:!%281,10%29%29,%28i:8458,v:!%280,6%29%29,%28i:8466,v:!%281,2,3,5%29%29,%28i:8400,v:!%280,20%29%29,%28i:8302,v:!%280,1,2%29%29,%28i:8278,v:!%281,2%29%29%29,view:list%29,sc:1%29
Daniel H. schrieb: > Ich hoffe der folgende Link funktioniert, der sollte in der > parametrischen Suche von Atmel auch die AtmegaXXM1 aufführen: AAAAAH, sorry, mein Fehler. Ich hatte bei der Suche nur CAN ausgewählt und den Rest auf Standard gelassen. Da ich nur kurz gesucht habe ist mir nicht aufgefallen, dass das Suchergebnis mehrere Seiten hat. Du hast recht, da sind Atmegas dabei.
Frank K. schrieb: > Noch weniger? (siehe Bilder) @Frank: mir ist aufgefallen, dass Du bei Dir keine Schutzbeschaltung am Bus vorgesehen hast. Hattest Du damit schon irgendwie Probeleme? Ich habe mich wegen dem Thema schon durch Foren und Appnotes gewühlt. Und habe bei mir dann TVS und Drossel am Buseingang eingebaut.
Bad U. schrieb: > Frank K. schrieb: >> Noch weniger? (siehe Bilder) > > @Frank: > mir ist aufgefallen, dass Du bei Dir keine Schutzbeschaltung am Bus > vorgesehen hast. Hattest Du damit schon irgendwie Probeleme? Ich habe > mich wegen dem Thema schon durch Foren und Appnotes gewühlt. Und habe > bei mir dann TVS und Drossel am Buseingang eingebaut. Das war ein Testboard, bei dem das nicht erforderlich war. fchk
André M. schrieb: > Da ich allerdings nur Assembler kann tu ich mir mir einem Wechsel > schwer.... > > Der Wechsel von der 68000 Familie auf AVR war schon eine gewaltige > Umstellung für mich. .... Und C lernen geht nicht? fchk
C muss ich erst lernen..... ;-) Ausserdem mag ich es mit den Registern zu "spielen" Aber C muss ich wirklich mal ran........
André M. schrieb: > Ausserdem mag ich es mit den Registern zu "spielen" An die musst Du auch in C ran ;) Zumindest wenn Du alles selber programmierst und nicht die Libs des Herstellers benutzt.
:
Bearbeitet durch User
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.