Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

Ethernet-CAN-Gateway

Ethernet Mega32 Experimentierboard
Antworten
  • Druckansicht
Erweiterte Suche
1 Beitrag • Seite 1 von 1
Terfagter
Beiträge: 1
Registriert: 27.01.2013, 21:20:18

Ethernet-CAN-Gateway

  • Zitieren

Beitrag von Terfagter » 28.01.2013, 21:42:51

Hallo zusammen,

ich würde gerne mit dem Ethernet ATmega32 Experimentierboard ein
CAN-Ethernet-Gateway bauen, damit ich per W-LAN von meinem
Android-Tablet Daten in und von meinem Hausbus senden/empfangen kann.
Zum experimentieren habe ich mit ein paar Lampen, Taster und Sensoren
aufgebaut und kann diese jetzt unterschiedlich auswerten.. Das klappt
auch alles bisher ganz gut. Jetzt soll das Android-Tablet eingebunden
werden, weshalb ich das Gateway bauen will.

Hardware:
Das ETH_M32_EX habe ich mit einem MCP2515 CAN Controller
und MCP2551 CAN Treiber erweitert. Der Ethernet und der CAN Controller
werden beide über SPI angesteuert.

Software:
Als CAN-Lib verwende ich die Lib von kreatives-chaos.com
(http://www.kreatives-chaos.com/artikel/ ... bibliothek). Für
das Ethernet verwende ich den Stack von Ulrich Radig.

Nachdem ich mir einiges zu dem Thema durchgelesen habe, fällt meine Wahl auf eine Datenübertragung per UDP. Beim Senden des Tablets bzw. des ETH_M32_EX würde ich ein ACK des Gegenübers selber einbauen. Das Gateway muss alle ankommenden CAN-Nachrichten in den UDP-Rahmen packen und immer an die gleiche IP (Tablet) senden. Umgekehrt sendet die Software des Tablets immer nur an die IP des Gateways.
Eine ankommende CAN-Nachricht besteht aus uint32_t id, int rtr, int extended, uint8_t length, uint8_t data[8]. Was ist dann die richtige Vorgehensweise, um diese Daten in einen UDP-Rahmen zu packen und abzusenden??

Könnte das so klappen?
Initialisierung:

Code: Alles auswählen

stack_init();
add_udp_app (300, (void(*)(unsigned char))udp_get);
ETH_INT_ENABLE;
sei(); 
while(1)
{
   eth_get_data();
}
Wenn eine CAN-Nachricht eingetroffen ist:

Code: Alles auswählen

udp_send{
   create_new_udp_packet(????);
   Und dann??
}
Zum Empfang einer Nachricht per UDP:

Code: Alles auswählen

udp_get()
{
for (int a = UDP_DATA_START;a < UDP_DATA_END_VAR;a++)
	{
		irgendeinarray[a] = eth_buffer[a];
	}
}
irgendeinarray[] würde ich dann weiterverarbeiten und als CAN-Nachricht weitersenden...

Was passiert eigentlich, wenn z.B. irgendeine Anfrage von einem anderen Teilnehmer aus dem LAN an das Gateway gestellt wird?! Antwortet es dann einfach nicht und gut ist?!

Vielen Dank für eure Hilfe. Hoffentlich liest sich diesen langen Text überhaupt jemand durch...
Nach oben

Antworten
  • Druckansicht
1 Beitrag • Seite 1 von 1

Zurück zu „ETH_M32_EX“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum