Homepage

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

Kopplung zweier ETH_M32_EX

Ethernet Mega32 Experimentierboard
Antworten
  • Druckansicht
Erweiterte Suche
17 Beiträge
  • 1
  • 2
  • Nächste
pascal
Beiträge: 25
Registriert: 25.09.2008, 16:32:41

Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von pascal » 13.10.2008, 17:08:37

Hallo,

ist es möglich zwei der Boards in einem (und evt. auch in unterschiedlichen Netzen) derart zu koppeln, dass ich von dem einen Board A die Eingänge und Ausgänge auf dem anderen Board B identisch setze und das am besten noch möglichst "Quasi-Realtime", also zzgl. Netzwerklaufzeiten etc.??

Kann ein Programmier-Amateur wie ich sowas realisieren?

Grüße
Nach oben

Benutzeravatar
jornbyte
Beiträge: 440
Registriert: 04.09.2008, 21:04:44

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von jornbyte » 13.10.2008, 20:31:24

Kann ein Programmier-Amateur wie ich sowas realisieren?
Diese Frage wirst du dir selbst beantworten müssen.

mfg
Jornbyte
Nach oben

pascal
Beiträge: 25
Registriert: 25.09.2008, 16:32:41

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von pascal » 14.10.2008, 16:32:30

Gute Antwort, hat mir doch unendlich geholfen. Frag mich bloß warum ich überhaupt nachgefragt habe. Weiß jetzt aber doch trotzdem noch nicht ob es überhaupt möglich ist...
Nach oben

Dietmar
Beiträge: 22
Registriert: 13.01.2008, 15:57:30

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Dietmar » 14.10.2008, 17:26:41

Hallo,

ja es ist möglich. "Quasi-Realtime" ist nicht möglich, Sekundentakt ist möglich.
Ich habe zwei Boards über UDP gekoppelt.
Kann ein Programmier-Amateur wie ich sowas realisieren?
Vielleicht, vielleicht auch nicht!

MFG
Dietmar
Nach oben

pascal
Beiträge: 25
Registriert: 25.09.2008, 16:32:41

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von pascal » 14.10.2008, 20:16:18

Wie sieht denn diese UDP Kopplung konkret aus? Leider konnte ich noch nicht so richtig die ganze Ansteuerung für das Board finden. Ich sehe lediglich wie eine HTML-Seite aufgebaut wird... Könnte ich denn ein Beispiel für solch eine Kopplung bekommen?

Also was ich mit "Programmier-Amateur" meinte war, dass ich schon ein wenig mit uC (AVR) gemacht habe so von LED blinken lassen bis ein paar Daten über RS-232 verschicken, HTML Seiten habe ich auch schon "programmiert". C++ Grundlagen sind vorhanden. Ich weiß eben nur absolut nicht wo ich anfangen soll zu suchen und zu tun...

Grüße
Nach oben

philipp.fister
Beiträge: 94
Registriert: 24.05.2008, 02:54:22
Wohnort: Lüdenscheid
Kontaktdaten:
Kontaktdaten von philipp.fister
ICQ

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von philipp.fister » 14.10.2008, 22:19:24

C++ wird dich bei einem µC nicht weiter bringen. Da dir C++ viel mehr möglichkeiten bietet.
Nach oben

Dietmar
Beiträge: 22
Registriert: 13.01.2008, 15:57:30

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Dietmar » 15.10.2008, 11:46:51

Hallo,

hier ein lauffähige Kopplung zweier Boards.
Es werden die Variablen der httpd.c verwendet.

MFG
Dietmar
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Nach oben

Jens
Beiträge: 5
Registriert: 17.12.2008, 22:37:45

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Jens » 17.12.2008, 23:49:03

Hallo,

ich arbeite mich gerade durch die sourcecodes von Ulrich Radig newStack_1_1_4 und die erweiterung von Dietmar Misch. Ich bin noch etwas unsicher in C und suche derade die passende Stelle, an der die Daten stehen die dann per UDP gesendet werden.

Soweit es bis jetzt durchblicke, Zeigt UDP_DATA_START auf die Stelle wo die Daten anfangen. Im Post steht, es werden die Variablen von httpd.h genutzt. Dort finde ich diesen Zeiger nicht.
Daher weiß ich nicht wo ich meine Daten unterbringen soll.

Die zweite Frage ist, kann ich auch während das Programm läuft den Status Sender/Empfänger ändern, oder brauch ich das gar nicht. Soll heißen, wenn die Einstellung wie in der Erweiterung der config.h ist kann ich nach belieben senden oder empfangen?
Nach oben

klemic
Beiträge: 82
Registriert: 18.12.2007, 10:15:12

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von klemic » 18.12.2008, 09:39:38

Hallo Jens,

UDP_DATA_START ist kein Zeiger, sondern ein konstanter Zahlenwert (so als würdest Du irgendwo z.B. 25 hinschreiben, eine Definition mit #define wird vom Preprozessor des Compilers einfach durch den Wert (Buchstabenkombination) ersetzt, die durch die Definition hinterlegt ist) (bei UDP_DTATA_START = die Länge des ETH Headers+Länge des IP Headers+Länge des UDP Headers=42, das Ganze ist in stack.h definiert) (meist wird Großschreibung verwendet um solche konstanten Werte zu kennzeichnen, ist aber nur für den Programmierer von Bedeutung, dem Compiler ist wurscht ob Groß oder Klein)

Wenn Daten vom ENC28J60 kommen, bzw. wenn Du welche sendest, wird beim Projekt von Uli für UDP und TCP der Buffer unsigned char eth_buffer[MTU_SIZE+1] verwendet.

Die Konstanten XXX_DATA_START usw. sind lediglich hilfreich um einen Zeiger auf den Anfang der Datenbereiche in einem UDP oder TCP Paket zu setzen.

Was verstehst Du unter Sender und Empfänger wechseln? Du kannst Daten an jeden beliebigen Teilnehmer im Netzwerk schicken, und genausogut von jedem Teilnehmer aus dem Netzwerk Daten empfangen, wer ist Sender und wer Empfänger, das liegt im Auge des Betrachters...

Grüße,
Micha
Nach oben

Jens
Beiträge: 5
Registriert: 17.12.2008, 22:37:45

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Jens » 19.12.2008, 01:02:22

Danke für die schnelle Antwort...

Das hat mir extrem weitergeholfen. Jetzt habe ich die Verbindungen im Code gefunden und verstanden.
Was ich jedoch noch nicht gefunden habe, ist die Stelle, wo die Variable var_array mit dem Status z.B. von PortA "befüllt" wird. Ich finde nur die Stelle in der httpd.c

Code: Alles auswählen

//Müssen Variablen ins Packet eingesetzt werden? ===> %VA@00 bis %VA@09
		if (b == '%')
		{
			if (strncasecmp_P("VA@",http_entry[index].new_page_pointer,3)==0)
			{	
				b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;
				b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48);	
				itoa (var_array[b],var_conversion_buffer,10);
				str_len = strnlen(var_conversion_buffer,CONVERSION_BUFFER_LEN);
				memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
				a = a + (str_len-1);
				http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5;
			}
wo der var_conversion_buffer mit den Werten aus var_array gesetzt wird. Wie kommen die Daten in das Array var_array?

Danke und Gruß,

Jens
Nach oben

klemic
Beiträge: 82
Registriert: 18.12.2007, 10:15:12

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von klemic » 19.12.2008, 08:49:15

Hallo Jens,
das var_array[] wird gar nicht mit dem Status der Ports befüllt. Im var_array[] kannst/könntest Du beliebig Werte ablegen und nach eigenem Geschmack auf der Webseite anzeigen lassen. Ausserdem werden in der ISR Funktion in analog.c die var_array[0] .. var_array[7] mit Analogwerten vom A/D Wandler beschrieben, sofern Du USE_ADC auf 1 gesetzt hast und deswegen in der while(1) Schleife in main() eine Wandlung angestoßen wird:
main:
.
.
.
while(1)
{
#if USE_ADC
ANALOG_ON; // hier wird eine A/D Wandlung angestoßen, die Ergebnisse werden im Interrupt in die var_array[0..7] geschrieben...
#endif

In httpd.c in der Funktion httpd_data_send(index) werden die gespeicherten Webseiten aus webpage.h (die eigentlich besser webpage.c heißen sollte, da dort Variablen definiert und nicht deklariert werden) an den Web-Browser gesendet und dabei werden evtl. vorkommende "Platzhalter" (z.B. %PIND7) durch den Text ersetzt, der dann
(-> dynamische Webseite) im Browser dargestellt werden soll. Für die Variablen wird zur Konvertierung der var_conversion_buffer verwendet, da ja nicht von vorneherein klar ist, wieviele ASCII Zeichen für einen Wert benötigt werden, bzw. welches Format die Ausgabe haben soll...
Die Platzhalter für den Status der Ports wird im Gegensatz dazu direkt z.B. bei den Ausgängen durch "checked" oder nix ersetzt (damit die HTML checkbox bei der Darstellung im Browser einen Haken bekommt oder eben nicht, oder bei den Eingängen "ledon.gif" bzw. "ledoff.gif" dargestellt werden soll)...
Grüße,
Micha
Nach oben

Jens
Beiträge: 5
Registriert: 17.12.2008, 22:37:45

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Jens » 19.12.2008, 09:09:45

Hallo Micha,

ich kam auf den Gedanken, weil im UDP_SEND code von Dietmar die var_array gesendet wird und in der Empfangsroutine des Stauts von PORTA aus var_array[5] genommen wird. Daher dachte ich, dass vorher irgendwo im Code der Status von PORTA ja auch dort gespeichert werden muss.

Den Umgang mit dynmischen Platzhaltern muss ich mir noch erschließen...
Nach oben

klemic
Beiträge: 82
Registriert: 18.12.2007, 10:15:12

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von klemic » 19.12.2008, 09:38:38

Ich habe mir den Code von Dietmar nicht angeschaut, daher kann gut sein, dass die Verhältnisse dort eventuell anders sind...
Nach oben

Jens
Beiträge: 5
Registriert: 17.12.2008, 22:37:45

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Jens » 19.12.2008, 16:20:39

Du hast Recht.

Auf jedenfall funktioniert es. Wenn ich var_array vor dem Senden mit Werten belege, kommen diese auch an.

Vielen Dank für die Hilfe.


Gruß jens
Nach oben

Noir
Beiträge: 2
Registriert: 14.03.2009, 11:26:01

Re: Kopplung zweier ETH_M32_EX

  • Zitieren

Beitrag von Noir » 14.03.2009, 11:30:33

Hallo zusammen.

Ich versuche mich auch gerade daran Daten zwischen 2 Modulen hin und her zu senden. hab auch schon das teil programm zum senden und epfangen eingebaut. Meine Frage ist nun wie kann ich es hinbekommen das die Ausgänge der beiden Module immer gleich sind also ich schalte auf Modul 1 den Ausgang 1 und auf dem Modul 2 schaltet sich dieser dann auch?

mfg Noir
Nach oben

Antworten
  • Druckansicht

17 Beiträge
  • 1
  • 2
  • Nächste

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