Forum: Mikrocontroller und Digitale Elektronik MCP2551 CLKOUT -> AVR


von Stefan L. (avlbger)


Lesenswert?

Hallo zusammen, ich möchte ein wenig mit CAN-Bus experimentieren und 
habe mir dazu ein paar MCP2551 + CAN Treiber MCP2515 besorgt. Als AVR 
nehm ich dafür Atmega8. Dummerweise hab ich mich ein wenig vertanbei der 
Bestellung und nun zu wenig Quarze.. (und 7 EUR Versandpauschale für ein 
paar Cent-Quarze :(.. muss nicht sein wenn nicht unbedingt nötig..)

Die Überlegung ist nun den MCP an den Quarz (16Mhz) zu hängen und über 
den CLOCKOUT vom MCP den AVR mit Takt zu versorgen. Offenbar liefert der 
MCP aber per default Takt/8. Theoretisch wäre das per SPI änderbar aber 
funktioniert das wenn ich im AVR SPI initialisiere bei Takt/8 und dann 
den MCP auf Takt/1 umstelle? Dann würde die Taktrate beim AVR ja während 
des Betriebs sprunghaft ansteigen... geht sowas gut?

Weiters, leider auch keine Info im Netz dazu gefunden, kann mir jemand 
sagen mit welchen Taktfrequenzen CAN überhaupt möglich ist bzw. ob man 
nicht jeden Quarz verwenden kann? Für RS232-Schaltungen nimmt man ja 
normalerweise Baudratenquarze, ist das mit CAN auch so dass man hier 
dann "gerade" Frequenzen nehmen sollte? (Zu dem Ergebnis kam ich 
zumindest mit ein paar Online-Rechnern zur CAN Bitrate)

Will ich also in meiner Schaltung CAN und RS232 verwenden, wäre es 
demnach also fast unumgänglich bzw. zumindest sinnvoll zwei Quarze 
einzusetzen oder haut das mit einem Takt auch hin? (Wenn ja, hat wer 
Erfahrungswerte was da funktioniert?) Ich habe 8 Mhz, 16 Mhz, 7,3728 MHz 
und 14,7456 MHz rumliegen.

vg, und danke, avlbger

von Frank K. (fchk)


Lesenswert?

Stefan L. schrieb:
> Die Überlegung ist nun den MCP an den Quarz (16Mhz) zu hängen und über
> den CLOCKOUT vom MCP den AVR mit Takt zu versorgen. Offenbar liefert der
> MCP aber per default Takt/8. Theoretisch wäre das per SPI änderbar aber
> funktioniert das wenn ich im AVR SPI initialisiere bei Takt/8 und dann
> den MCP auf Takt/1 umstelle? Dann würde die Taktrate beim AVR ja während
> des Betriebs sprunghaft ansteigen... geht sowas gut?

Gesichert ist es nicht. Das Umschalten muss ohne Glitches stattfinden, 
d.h. beim Umschalten müssen in jedem Fall die Timingbedingungen 
eingehalten werden. Das wäre mit einem digitalen Oszi oder Logicanalyzer 
zu prüfen. Hättest Du einen PIC genommen, hättest Du im Betrieb die Takt 
umschalten können, d.h. mit dem internen RC Oszillator gestartet und 
anschließend auf den externen Takt umgeschaltet. Dann hättest Du aber 
ohnehin Deine Probleme nicht gehabt, denn Deinen CAN-Controller gibt es 
nämlich für nur unwesentlich mehr Geld auch gleich mit eingebautem PIC 
und heißt dann PIC18F26K80 in der Version mit dem meisten Flash.

> Weiters, leider auch keine Info im Netz dazu gefunden, kann mir jemand
> sagen mit welchen Taktfrequenzen CAN überhaupt möglich ist bzw. ob man
> nicht jeden Quarz verwenden kann? Für RS232-Schaltungen nimmt man ja
> normalerweise Baudratenquarze, ist das mit CAN auch so dass man hier
> dann "gerade" Frequenzen nehmen sollte? (Zu dem Ergebnis kam ich
> zumindest mit ein paar Online-Rechnern zur CAN Bitrate)

Es ist wie mit RS232. Prinzipiell funktionieren auch krumme Bitraten, 
aber genau wie bei RS232 nur bestimmte Baudraten üblich sind, gibt es 
auch bei CAN nur einige wenige gängige Standardbitraten 
(125/250/500/1000, im Low-Speed Bereich vielleicht noch 62.5 und 50, 
aber das wars dann auch)

> Will ich also in meiner Schaltung CAN und RS232 verwenden, wäre es
> demnach also fast unumgänglich bzw. zumindest sinnvoll zwei Quarze
> einzusetzen oder haut das mit einem Takt auch hin? (Wenn ja, hat wer
> Erfahrungswerte was da funktioniert?) Ich habe 8 Mhz, 16 Mhz, 7,3728 MHz
> und 14,7456 MHz rumliegen.

Dann hänge den 16MHz Quarz an den MCP und den 14.7456MHz Quarz an den 
AVR.

Und denke daran: Du musst zwingend mindestens einen definitiv 
funktionierenden CAN-Bus Teilnehmer zusätzlich zu Deinem AVR/MCP Board 
auf dem Bus haben, denn sonst läuft Dein MCP in einen Bus Error beim 
Senden.

fchk

von Stefan L. (avlbger)


Lesenswert?

Ja ich muss jetzt mal mit einem anfangen.. und mit AVR hab ich 
wenigstens langsam das Gefühl dass ich mich ein wenig auskenne 
(zumindest reichts meist für meine Anwendungen) Ich muss gestehen ich 
wüsste jetzt net mal so genau den Unterschied von PIC zu AVR.. muss ich 
mal recherchieren wenn Zeit ist :)

Danke auch für den Hinweis mit dem zweiten Busteilnehmer, darüber bin 
ich zum Glück schon im Netz gestolpert so wäre mir dieser Fehler beim 
Testen zumindest mal nicht passiert :)

Dann geh ich das Ganze nun also mal mit verschiedenen Quarzen an und bin 
gespannt ob ich durchsteige :)

Danke und lg, avlbger

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.