Forum: Haus & Smart Home Can-Controller/µC


von André M. (killroymenzel)


Lesenswert?

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é

von Canni (Gast)


Lesenswert?

Nein, ich kenne keine MC mit CAN mit SOCI8 oder 14.

Ansonsten solltest Du die Suche im Forum verwenden.

von Programmierer (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von André M. (killroymenzel)


Lesenswert?

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......

von Dominik S. (dasd)


Lesenswert?

André M. schrieb:
> Dann muss ich nur noch lernen diesen µC in Assembler zu
> programmieren.... :-/

Wenn du es eh lernen musst: Lern C :D

von André M. (killroymenzel)


Lesenswert?

Dominik S. schrieb:
> Wenn du es eh lernen musst: Lern C :D

Ich bin Assembler-Fetischist......
Manche nennen mich auch Masochisten... ;-)

von Lutz (Gast)


Lesenswert?

Dann wundert es mich aber, daß du CAN nimmst. Ich hätte dann z.B. RS-485 
mit eigenem Protokoll erwartet... ;-)

von Bad U. (bad_urban)


Lesenswert?

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.

von Menzel.andre@online.de (Gast)


Lesenswert?

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.... :-)

von Frank K. (fchk)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

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!

von André M. (killroymenzel)


Lesenswert?

Mein Favorit ist allerdings AVR... :-/

von Barbie (Gast)


Lesenswert?

Und mein Favorit ist Mattel.

von user (Gast)


Lesenswert?

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.

von Bad U. (bad_urban)


Lesenswert?

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.

von André M. (killroymenzel)


Lesenswert?

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.........

von Bad U. (bad_urban)


Lesenswert?

Jetzt hast Du noch alle Freiheiten. Ich wollte mich schon immer mal mit 
CAN beschäftigen und hab das dann zum Anlass genommen.

von Wolfgang A. (Gast)


Lesenswert?

André M. schrieb:
> Aber ich glaube ich nehme dann doch nen 485Bus....

Und dafür gibt es µCs mit integriertem Treiber?

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

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

von Skyper (Gast)


Lesenswert?

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!

von André M. (killroymenzel)


Lesenswert?

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...

von Bad U. (bad_urban)


Lesenswert?

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.

von André M. (killroymenzel)


Lesenswert?

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. ....

von Bad U. (bad_urban)


Lesenswert?

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.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

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.

von André M. (killroymenzel)


Lesenswert?

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?

von Bad U. (bad_urban)


Lesenswert?

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€

von Bad U. (bad_urban)


Lesenswert?

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
von Daniel H. (Firma: keine) (commander)


Lesenswert?

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

von Bad U. (bad_urban)


Lesenswert?

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.

von Bad U. (bad_urban)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von Bad U. (bad_urban)


Lesenswert?

Ah, OK. Und was hast Du Dir für Deinen Bus als Schutzbeschaltung 
vorgesehen?

von Frank K. (fchk)


Lesenswert?

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

von André M. (killroymenzel)


Lesenswert?

C muss ich erst lernen..... ;-)

Ausserdem mag ich es mit den Registern zu "spielen"

Aber C muss ich wirklich mal ran........

von Bad U. (bad_urban)


Lesenswert?

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
Noch kein Account? Hier anmelden.