Forum: Mikrocontroller und Digitale Elektronik ATMega16M1 wie lange dauert das aktivieren des CAN-Controllers?


von Thomas (kosmos)


Lesenswert?

Hallo, ich habe in einem Quelltext gesehen das nach dem aktivieren des 
CAN-Controllers auf das Flag gewartet wird, das der CAN-Controller 
bereit ist. Ich habe im Datenblatt dazu nichts gefunden wie lange das 
ganze dauern soll da ich ungerne darauf polen will. Den Controller 
selber habe ich noch nicht sonst könnte ich das einfach mal über einen 
Ausgang und dem LA oder Oszi ausmessen. Hat vielleicht jemand 
Erfahrungen damit oder hat im Datenblatt etwas dazu gefunden.

http://www.atmel.com/images/doc8209.pdf
1
CANGCON = 0x02 ;   // enable CAN 
2
    
3
    while(!(CANGSTA & (1<<ENFIG)));   // wait until CAN bus being enabled 
4
}

von Peter D. (peda)


Lesenswert?

Thomas O. schrieb:
> Hallo, ich habe in einem Quelltext gesehen das nach dem aktivieren des
> CAN-Controllers auf das Flag gewartet wird, das der CAN-Controller
> bereit ist.

Steht da auch, warum er das macht?
Üblich ist das nicht, ich wüßte auch nicht, wozu.

von Frank K. (fchk)


Lesenswert?

Wer lesen kann, ist im Vorteil. Seite 175 oben:

"1 - enable mode: The CAN channel enters in enable mode once 11 
recessive bits has been read"

von Peter D. (peda)


Lesenswert?

Trotzdem bleibt die Frage, warum man überhaupt darauf warten sollte.
Der CAN-Controller wird nicht eher senden oder empfangen, als bis er 
enabled wurde.

von Frank K. (fchk)


Lesenswert?

Er könnte einen Fehler werfen, anstelle zu senden. Und als 
Applikationsentwickler würde ich das wissen wollen.

von Rudolph (Gast)


Lesenswert?

Ja, interessant.

Gebraucht habe ich das noch nie, auch nicht beim 90CAN32.
Empfang passiert dann einfach.
Und bevor man mit einer Message-Box versucht zu senden bietet es sich 
sowieso an, per:
1
if(CANSTMOB & (1<<TXOK)) // fertig mit Senden?

abzufragen, ob die Message-Box bereit ist.

Dann läuft bei richtiger Programmierung auch der Rest des Programmes 
weiter wenn der CAN mal unterbrochen oder falsch terminiert ist.

von Thomas (kosmos)


Lesenswert?

@Frank K.: Ich denke du hast recht. Es geht hier anscheinend nicht darum 
wie lange die Initilisierung des CAN-Controller nach dem Einschalten 
dauert, sondern einfach darum das man 11 rezessive Bits abwartet bevor 
man auf den Bus senden. Siehe End of Frame
http://upload.wikimedia.org/wikipedia/commons/5/5e/CAN-Bus-frame_in_base_format_without_stuffbits.svg

@Peter D.: nein es gibt keine Angabe im Quelltext dazu.

Habe natürlich schon vor nach dem Senden die Fehlerflags auszuwerten.

Habe heute Mittag mal ein Ticket bei Atmel eröffnet mal sehen was die 
dazu schreiben.

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.