Forum: Mikrocontroller und Digitale Elektronik Wake Up nach CAN-Nachricht


von Jan (Gast)


Lesenswert?

Ich habe folgendes Problem:
Ich habe ein At90can128 mit einem ATA6660 Transreciever, der 
CAN-Botschaften empfängt. Wenn nach 4 Sekunden auf dem Bus keine 
Aktiviäten mehr sind soll der Controller in den Standbybetrieb wechseln. 
Soweit funktioniert das auch.
Falls nun aber wieder Nachrichten auf dem Bus versendet werden soll der 
Controller so schnell wie möglich aufwachen um die Nachrichten zu 
empfangen. Im Datenblatt steht, dass nur ein externer Interuppt den 
Atmel wieder weckt. könnte ich einfach die rxd leitung vom transrecier 
an einen externen Interrupt anschließen

von Klaus2 (Gast)


Lesenswert?

...hat der can contr keine spezielle INT leitung? beim bosch gibts da 
welche, die bei spez (einstellbaren) adressen einen INT auslösen.

Klaus.

von Andreas M. (cheflooser)


Lesenswert?

ich denke mal mit dem interrupt über die RXD leitung könnte es eventuell 
zeitliche Probleme geben. Wacht der schnell genug auf um dann den Rest 
des 1.Bits mit zu kriegen?

von Klaus2 (Gast)


Lesenswert?

...einige can contr speichern die erste nachricht imho. aber guck dir 
mal zb die bosch dinger an - hatte nur kurz damit zu tun, machte aber 
einen soliden eindruck. ist natürlich nen unterschied, ob du nur einen 
TRANSCEIVER oder einen ECHTEN CONTROLLER nutzt.

Klaus.

von Fabian B. (fabs)


Lesenswert?

@Klaus2: man benutzt beides: der Transceiver ist nur für die Umsetzung 
von Unipoloar RX/TX auf die differentielle Leitung des CAN. Der 
Controller hängt hinter dem Transceiver am RX/TX. Der At90can128 ist 
dabei ein FULL-CAN-CONTROLLER. Er kann also "alles".

@Jan: Die Sleepmodes der Transceiver sind Teilweise etwas 
merkwürdig...der MAX3053 braucht z.B. für den Wakup >9V auf CANH. Andere 
brauchen einen Dominanten Zustand über mehrere µs.
Der ATA6660 horcht ja im Stby auf einen Dominanten Zustand auf der 
Leitung und signalisiert dem Controller dann per RXD, das was los ist. 
Dafür braucht er laut DB 400ns. Diesen Pin könntest du an einen Int des 
AT90 hängen und diesen Int nur aktivieren, wenn der ATA6660 im Stby ist. 
Kommt der Int, wird der ATA6660 wieder auf normal geschaltet.
Ob du das erste Byte der Nachricht (also der Aufwachgrund) tatsächlich 
noch korrekt und vollständig empfangen wird müsste man ausrechnen 
können...zum aufwachen braucht er 2µs, also zusammen 2,5µs. Bei 1Mbit 
ist aber eine Bit-Time schon kürzer...bei 100kBit könnte es gehen.
Dieses relativ schnelle Aufwachen erkauft man sich aber auch durch einen 
Stby-Strom von relativ hohen 600µA.

Das war jetzt zwar viel mehr Ausführung als du vielleicht wissen 
wolltest, aber evtl. trotzdem interessant. ;-)

Gruß
Fabian

von Klaus2 (Gast)


Lesenswert?

@Klaus2: man benutzt beides: der Transceiver ist nur für die Umsetzung
von Unipoloar RX/TX auf die differentielle Leitung des CAN. Der
Controller hängt hinter dem Transceiver am RX/TX. Der At90can128 ist
dabei ein FULL-CAN-CONTROLLER. Er kann also "alles".

schon klar, aber das bosch teil ist für automotive ein spezialchip und 
daher speziell. den rest kenn ich auch, also "diskret".

Klaus.

von Fabian B. (fabs)


Lesenswert?

haste mal ne Teilenr?

Gruß
Fabian

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.