-
-
Neuer Benutzer
Öfters hier
Botschaften senden mit AT90CAN128-->TJA1020 auf LIN-BUS ?
Hi @ all,
ich bin neu hier und schreibe meine Diplomarbeit in dem Thema µC Programmierung. Ich habe nur Grundkenntnisse in der µC Programmierung, daher steh ich bereits zu Beginn meiner Arbeit vor folgendem Problem.
Zum Programmieren benutze ich das AVR Studio 4.18. Als µC den AT90CAN128 von ATMEL. Dieser versendet Botschaften an den TJA1020 (von Philips) und dieser wiederrum LIN Botschaften die ich mit CANoe überprüfen/lesen kann.
Mein Problem ist jetzt wie ich bei der ganzen Sache vorgehe?
Wie bekomme ich auf dem AT90CAN128 Botschaften versendet die über den TJA1020 auf den LIN-Bus gesendet werden?
Was gesendet wird ist ganz egal, darum mache ich mir später Gedanken...mein Hauptproblem ist erstmal eine Nachricht auf den LIN zu bekommen.
Gruß Andreas
-
Erfahrener Benutzer
Roboter Genie
Hi,
generell musst Du Dich zuerst mal darum kümmern, das LIN-Protokoll auf dem Atmel "in Software" zu realisieren. Denn im Gegensatz zum CAN, wofür der AT90CAN ja seinen eigenen Controller schon im Bauch hat, musst Du beim LIN das Protokoll "zu Fuss" umsetzen. Dazu kannst Du am einfachsten die UART des Atmel verwenden und mithilfe einer State-Machine das Protokoll angehen. Alternativ kannst Du es Dir auch einfacher machen und Dir die Application Note AVR322 bei Atmel anschauen...
Der TJA1020 dienst letztendlich nur dazu, die 5V-2-Draht-Kommunikation der UART auf die 12V-1-Draht-Topologie des LIN umzusetzen (Layer 1 im ISO/OSI Modell).
Ich hoffe, das hilft Dir schon mal weiter.
Gruß
askazo
-
Neuer Benutzer
Öfters hier
Hi askazo,
danke für die schnelle Antwort. ich habe mir jetzt mal die Application Note AVR322 bei Atmel angeschaut und probiere gerade das "Master LIN" Beispiel aufzubauen nur leider hänge ich da schon wieder vor einem Problem.
Beim "Build" des Projekts kommen 7 Fehlermeldungen. Wenn ich diese Anklicke wird diese Syntax markiert:
(76) typedef unsigned char U8;
(81) typedef unsigned char U16;
Mit den Hinweisen:
config.h(76): error: typedef: Unknown instruction or macro
config.h(76): error: unsigned: Unknown instruction or macro
config.h(76): error: char: Unknown instruction or macro
config.h(76): error: U8: Unknown instruction or macro
config.h(81): error: typedef: Unknown instruction or macro
config.h(81): error: unsigned: Unknown instruction or macro
config.h(81): error: syntax error, unexpected FUNCTION
Gruß & thx
Andreas
-
Erfahrener Benutzer
Roboter Genie
Äh, ich sehe gerade, dass Du im Unterforum "Assembler" gepostet hast.
Wenn Du das ganze in Assembler schreiben willst, kannst Du mit der Application Note natürlich nicht viel anfangen - denn die ist für C geschrieben. Das würde auch die Fehlermeldungen erklären.
Ist es für Deine Diplomarbeit vorgegeben, in Assembler zu programmieren? Wenn nicht, würde ich Dir eher zum GCC-Compiler (WinAVR) raten, den man auch problemlos ins AVR-Studio einbinden kann.
Ansonsten wird's ne Menge Arbeit, das in Assembler umzusetzen (und dann kann ich Dir auch nicht mehr weiterhelfen, denn meine Assembler-Kenntnisse sind eher oberflächlich...)
Gruß,
askazo
-
Neuer Benutzer
Öfters hier
Hi askazo,
das ganze soll in C Programmiert werden also nicht im assembler, habe ich vergesse zu erwähnen. Das Testprogramm mit dem ich die oben genannten Probleme hatte, sind dadurch entstanden das ich das Testprogramm mit AVR Studio zum laufen bringen wollte aber das wurde in IAR EW geschrieben.
Ich habe mir jetzt den IAR EW runtergelanden und kann das Testprog da mal einlesen aber irgendwie komm ich mit dem Programm nicht klar also wieder zurück zum "AVR Studio" und eine andere Lösung finden.
Ich habe mir jetzt mal das Testprogramm von http://www.mikrocontroller.net/topic/62061 runtergeladen, konnte es auch auf den µC schreiben aber meine Hardware ist bis jetzt nur LIN fähig, kann daher die CAN-Kommunikation nicht testen
Werde die Tage mal den TJA1041T anschließen um zu überprüfen ob wengistens mal die CAN-Kommunikation funktioniert.
Ich weiß noch immer nicht wie ich vor gehen soll um eine Nachricht auf dem LIN-Bus auszugeben.
Ich brauch einmal die Library vom AT90CAN128 und dann vom TJA1020T oder ?
Bin grad etwas verwirrt...
@MODERATOR: Bitte nach "C-Programmierung" verschieben
-
Erfahrener Benutzer
Roboter Genie
Hm, mich wundert aber trotzdem, dass der WinAVR am typedef hängen bleibt. Das nimmt er normalerweise ohne Probleme. Aber gut, Vielleicht liegt das Problem auch ein bißchen weiter vorne im Programm und hat mit dem typedef gar nichts zu tun. Generell lassen sich auch Programme, die mit dem IAR geschrieben sind, relativ leicht auf den WinAVR umschreiben.
Da Du ja jetzt scheinbar eine LIN-Library hast (hab gerade nicht viel Zeit, Deinen Link schaue ich mir morgen mal an), sollte darin a) eine Funktion enthalten sein, die den LIN initialisiert (LIN_Init oder so ähnlich) und b) eine Funktion, die LIN Nachrichten sendet. Das sollte eigentlich für die ersten Versuche reichen. FÜr den TJA1020 brauchst Du keine Library, da er völlig Softwareunabhängig funktioniert und lediglich die physikalischen Anforderungen des Busses umsetzt.
-
Neuer Benutzer
Öfters hier
Hi askazo,
das hilft mir schonmal weiter das der TJA1020 Softwareunabhängig läuft.
Ich probiere es mal morgen aus und poste dann meine Erfolge/Misserfolge!
VIELEN DANKE SCHONMAL FÜR DEINE TIPPS
Gruß Andi
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen