Hallo liebes Forum. ich will einen LIN-Slave programmieren, jedoch fehlt mir jegliche erfahrung. den Slave habe ich selbst entwickelt (anhang). der slave soll folgendes machen: -temperatur an master senden -bei aufforderung des Masters relais schalten -bei aufforderung des Masters reset ausführen bzw. variable auf eins setzen -Checksumme prüfen gibt es jemanden der mal ein LIN-Slave programmiert hat und mir dabei helfen könnte? Danke an alle
hallo. was ein LIN-knoten können muß, steht hier: http://lin-subbus.org/ die spezifikationen 2.x unterscheiden sich in einigen punkten wesentlich von 1.3. mit welchem standard läuft denn dein master? im prinzip is das ganze recht einfach, wenn du auf eine komplette umsetzung der spec verzichten kannst. wir können das z.b. nicht und kaufen LIN-treiber deshalb für richtiges geld. eine mögliche implementierung in C findest du bei freescale in der application note AN2503 (AN2503SW.zip). das ganze ist natürlich auf freescale-controller gemünzt, d.h. du mußt alles hardwareabhängige ändern (interrupts, UART, timer usw). der anschluß deines ATA6662 funktioniert natürlich so nicht. RX und TX müssen schon mit der seriellen schnittstelle des µC verbunden sein. hoffe geholfen zu haben. gruß michael
ich sehe gerade, die freescale-version arbeitet gar nicht mit der UART... das macht das leben an der einen oder anderen stelle einfacher. andererseits sehe ich auch gerade, daß einige routinen in assembler geschrieben sind... naja. du machst das schon ;-) gruß michael
> der anschluß deines ATA6662 funktioniert natürlich so nicht. RX und TX
müssen schon mit der seriellen schnittstelle des µC verbunden sein.
Das sind sie doch! (Lesen müsste man können...)
Ich bin auch gerade beim Entwurf eines Slaves mit dem ATA6662, die
Anbindung an den uP scheint ok zu sein. Aber mehr kann ich noch nicht
dazu sagen.
michael wrote: > hallo. > > was ein LIN-knoten können muß, steht hier: http://lin-subbus.org/ > die spezifikationen 2.x unterscheiden sich in einigen punkten wesentlich > von 1.3. mit welchem standard läuft denn dein master? > der slave soll mit der version 2.0 laufen. bensch hat übrigens recht. dadurch das die leitungen mit den selbenlabels beschrieben werden sind sie verbunden. dies wird von der software erkannt. ich schau mir deinen link gern mal an. natürl wäre eine app note von atmell besser.
Ich würde gern wissen -wie ich die kommunikation initiiere, -welche einstellungen ich vornehmen muss bzw konfiguration, - wie muss die uart konfiguriert sein? -wie werden die ID vergeben welche rolle die NCF genau spielen und, ob die überhaupt nötig sind wenn ich low-level programmiere, da ich keinen system generator habe. und des weiteren was im ersten eintrag des threads steht. ich würde geren eine baudrate von 9,6 kbit/s nutzen der Master wird von jemand anderen dann auf grundlage meiner slaves entwickelt. habe also mehr oder weniger freie hand. dachte mir das in den ersten beiden bytes die aufgenommenen Temperaturen stehen und an den Master gesendet werden. der slave task des masters soll ein byte senden das die information hält wie die relais geschaltet sein sollen und ob ein reset erfolgen soll (3 bit) ich hoff ich erschlage dich nicht mit so vielen fragen. :-) gruß Sticky
Ich würde gern wissen
>-wie ich die kommunikation initiiere,
Im Prinzip gar nicht, der Master macht das. Es gibt die Möglichkeit,
selbst
die Kommunikation zu Starten, aber das muß auch der Master freischalten.
-welche einstellungen ich vornehmen muss bzw konfiguration,
- wie muss die uart konfiguriert sein?
Standard serielle Kommunication, 8N1. Die Baudrate muss gemessen werden,
und angepasst werden, inkl verändern des OSC calibration.
-wie werden die ID vergeben
Die Vergiebst in gewisser WEise du, andere sind bereits fest Vorgegeben.
welche rolle die NCF genau spielen und, ob die überhaupt nötig sind wenn
ich low-level programmiere, da ich keinen system generator habe.
Sie Spielen eine Rolle bez. Debugger, sowie Dokumentation. Sonst mußt du
dich in SW durchkämpfen, was du da Implementiert hast.
Wenn du einen rudimentären Generator brauchst, kann ich liefern.
und des weiteren was im ersten eintrag des threads steht.
Da bin ich nicht Schlau draus geworden. Die HW scheint mir auch nicht
besonders Intelligent gemacht zu sein.
ich würde geren eine baudrate von 9,6 kbit/s nutzen
OK, kein Problem, nur der Master gibt die Baudrate vor, der Slave hat
nur
ein Hardcodiertes Maximum, welcher er nicht überschreitet.
der Master wird von jemand anderen dann auf grundlage meiner slaves
entwickelt. habe also mehr oder weniger freie hand.
dachte mir das in den ersten beiden bytes die aufgenommenen Temperaturen
stehen und an den Master gesendet werden.
der slave task des masters soll ein byte senden das die information hält
wie die relais geschaltet sein sollen und ob ein reset erfolgen soll (3
bit)
ich hoff ich erschlage dich nicht mit so vielen fragen. :-)
gruß Sticky
Mach ein ncf, das hilf, speziell zur Konfiguration der
Temperatursensoren,
da dort auch die Kalibration usw. erschlagen werden muß. Vergiß dann
nicht Firmwareupdate, ...
Nochwas, vergiß den NAD 0x7E , der ist bei 2.1 Reserviert.
Werde dir Morgen den NCF Compiler sowie den LIN Debugger (PC RS232) zur
Verfügung stellen. Dieser kann auch einen Master emulieren, sollte
keiner vorhanden sein.
http://www.freescale.com/files/microcontrollers/doc/reports_presentations/LINOVERVIEWPRESENT.ppt hier noch ein nützlicher Doku.
Hallo, habe gerade nachgesehen, hätte einen Lin 1.3 Generator für AVR mit UART. Ein 2.0 Master muß auch 1.3 Lin´s unterstützen. Den 2.0 habe ich nur für Pic sowie als generischen C, wo es dann nur um das Message Interpretation sowie Response geht.
gibt es denn eine möglischkeit das alles ohne ncf zu bewergstelligen? die vorgabe ist leider das der Slave 2.0 sein soll. an meiner uni steht ein BabyLIN modul von der firma lipowsky werde wohl damit den MAster emulieren. und die NCF erstellen. ich verstehe nur nicht welche aufgaben vom lin slave übernommen werden. im grunde nur die daten bereit stellen und checksumme prüfen oder? doch wie? wie gesagt habe keine erfahrung damit und weiß nicht was ich alles machen muss. >Mach ein ncf, das hilf, speziell zur Konfiguration der >Temperatursensoren, >da dort auch die Kalibration usw. erschlagen werden muß das habe ich im code gemacht und diese dan in eine variable abgelegt, um diese dann an den master zu senden. (ist eben eine Vorgabe des Profs. bin der minung das es schlauer wär dies am master zu machen aber was solls)
1 | int8_t Convert_ADC_in_Celsius(uint16_t ADC_Val) |
2 | {
|
3 | |
4 | int8_t T; |
5 | |
6 | T = ((ADC_Val-OFFSET)*20)/37; // (37/20 =1,85): ist die Steigung pro °C |
7 | // OFFSET: ADC-WERT bei 0°C
|
8 | return T; //Temperatur in °C |
9 | }
|
Der NCF generiert dir dann den Code, inklusive der Temperaturlinearisierung usw. Aber es Stimmt, für die paar Sachen kann man es problemlos auch ohne machen.
hättest du vielleicht beispielcode womit ich mich etwas vertraut machen kann?
Ich hab letztes Jahr einen Prüfstand mit dem BabyLIN gemacht und die NCF Files absolut nicht gebraucht, erst wollte ich mir die auch schreiben. Aber ich hab dann recht fix festgestellt das ich es nicht brauche. Wenn du nur den Slave entwickelst und den Master auch schon vorgibst reicht es eigentlich wenn du dir eine LDF und eine Zeitleiste überlegst mit der du dann arbeitest. Sowas kann man ganz gut mit Excel dokumentieren musste ich feststellen. So wurde mir das auch übergeben.
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.