Show Posts
Pages: [1]
1  International / Deutsch / Re: Frage zu TCP/IP Socket Komunikation on: April 25, 2013, 11:18:01 am
hallo  ja das hilft mir schon mal weiter  werde mir das mal durchlesen im detail danke smiley
hab mit der suchfunktion den thread net gefunden.

die pc seite ist kein problem , ich baue  über  QT  eine konsole da habe ich schon infos zusammengetragen wie man nen TCP  server / client schreibt.
lg
2  International / Deutsch / Frage zu TCP/IP Socket Komunikation on: April 25, 2013, 01:33:09 am
Ich beschäftige mich jetzt schon eine weile mit dem Ethernet shield.
aber irgendwie stehe ich am schlauch und komme nicht  weiter.

ich würde gerne eine  TCP/IP Socket komunikation zwischen  Arduino und  PC aufbauen.
aber ich finde nirgends ein  beispiel das die grundlagen erklärt.
vieleicht kann mir da jemand von euch weiterhelfen.
eventuel gibts ja schon wo ein beispiel.

was möchte ich machen

1) pc sendet eine anfrage  "sende mir daten"   arduino antwortet und schickt seine Daten.

2) pc sendet ein Datenpaket z.b"  "setzte pin  1,5,8 ... usw auf high"   arduino setzt diesen auftrag um.

Falls jemand tips dazu hat  das würde mir echt weiterhelfen.
lg


3  International / Deutsch / Re: Arduino - Ethernet - XML on: February 15, 2013, 10:51:03 am
Hallo zusammen
nett das ihr eure meinung dazu abgebt.

warum XML  naja   mein ehemaliger  elektronik prof hat gemeint das das mit jedem µC  einfach zu erzeugen ist.
von meiner sicht aus gesehen  ist es eigendlich egal mit welchem format die datenübertragung stattfindet.
der wunsch wäre die eingangszustände an den pc zu schicken der  bestimmt die ausgänge und sendet diese zurück.

der testaufbau besteht nur aus  einem Eingangsslave einem Master und einem Ausgangslave
später mal sollen es  doch etliche mehr werden.
das ziel ist meine modelleisenbahnanlage komplett über pc zu steuern und da reden wir von ein  paar 1000  ein und ausgängen.
daher scheidet der portexpander aus.
warum das nicht gleich der mega verarbeitet  naja einerseits kann ich mit ihm keine grafische oberfläche programmiern
und  256kB  Flash reichen da auch nicht aus.
ich hab schon Stellwerkssoftware programmiert und ein  kleiner Modellbahnhof mit 6 Gleisen  braucht 138kB  Speicher.


warum nicht serial ..
das ist einfach der pc wird an die 20 meter  von dem µC  weg sein und  da ist mir seriell von der datenübertragung zu unsicher kippt ein bit kommt ein topfen raus.

die slaves machen keine signalverarbeitung
der eingangslave tut nur  die eingänge entprellen
und der ausgangsslave ist noch  "dummer" der schaltet nur die pins

lg
Thomas

4  International / Deutsch / Arduino - Ethernet - XML on: February 14, 2013, 02:24:33 pm
nach dem ich mit der Glasgoogle nicht  sehr erfolgreich war vieleicht hat jemand von euch eine idee.

ich bastel gerade an einem neue Projekt herum.
Es besteht aus 3 Arduino Mega 2560
diese sind mit I²C verbunden.

ein Eingangsslave
ein Ausgangsslave
ein Master auf dem das Ethernetshield aufgesetzt ist.

das Programm soll wie folgt ablaufen

der Master holt sich  über I2C die Eingänge ob sie High oder Low sind.

dann soll er diese Werte über Ethernet an einen  pc senden (bzw der pc holt die daten ab)

der pc macht nun die Rechenarbeit und schickt das Ergebniss über  Ethernet wieder an den Master
der liest diese daten aus und sendet sie per I²C  an den Ausgangsslave.

meine gedankenansätze wären nun wie folgt der master erzeugt ein XML file wo die werte der Eingänge 0/1 und legt dieses auf der SD Karte ab.
der PC holt sich  über Ethernet von der SD karte die daten.
verarbeitet diese sendet dann ein 2tes file an die SD Karte zurück
der Master holt sich den informationsinhalt und  gibt die befehle an den Ausgangsslave weiter.

die Komunikation zwischen  PC und Ethernetshield funktioniert und die Beispielprogramme funktionieren auch.
aber zu dem  oben genannten  projekt gibt es irgenwie keine  beispiele.

kennt jemand von euch welche.
oder gibts andere möglichkeiten diesen Datenaustausch einfach zu gestalten.
meine bücher zu arduino geben da leider auch nicht wirklich etwas her.

für Tips wäre ich dankbar.


5  International / Deutsch / Re: Logische und / oder Abfrage on: January 20, 2013, 11:14:57 am
Hallo  zusammen hier ist die Lösung

es war ein einfacher ganz dummer programmierfehler meinerseits.

Der Fehler war nicht im Setzbefehl sondern beim Rücksetzen.

wenn ich

A==1 || B==1   dann setze  C==1  dann muss ich  natürlich beim Rücksetzen   A==0 && B==0  Rücksetze C==0   verwenden.

ich hatte auch beim rücksetzen  smiley-red  A==0 || B==0  Rücksetze C==0    .....kann einfach nicht funktionieren

lg
6  International / Deutsch / Re: Logische und / oder Abfrage on: January 20, 2013, 07:11:21 am
hallo  mahlzeit

habe heute einige versuche gestartet  alle mit dem selben ergebnis das  ich mit oder ohne  klammern nicht zu dem gewünschen erfolg komme.
oder  HIGH  vorangestellt oder hinten  ist auch egal.
somit kann ich trotz der guten tips kein bier ausgeben.


@ mde
deinen  oben genannten vorschlag werde ich noch  testen  das habe ich noch nicht probiert.

lg
Thomas
7  International / Deutsch / Re: Logische und / oder Abfrage on: January 19, 2013, 04:03:54 pm
die  funktionen  liefern nur  0 od 1  also High oder Low zurück 
gelesen wird aus einem bitbuffer.

bei  &&  funktioniert ja komischer weise alles
nur ||  macht  zicken

das ist das was mich so stuzig macht.
8  International / Deutsch / Re: Logische und / oder Abfrage on: January 19, 2013, 02:53:04 pm
in den programmierbeispielen  sind aber auch keine klammern ?

|| (logical or)

True if either operand is true, e.g.

if (x > 0 || y > 0)
   {
    // ...
   }
9  International / Deutsch / Re: Logische und / oder Abfrage on: January 19, 2013, 01:46:57 pm
@ mde   ja sorry war nur ein tipfehler hier von mir.
10  International / Deutsch / Re: Logische und / oder Abfrage on: January 19, 2013, 11:53:59 am
ja ich werde das testen ob das die ursache ist

bei der &&  Verknüpfung ist es egal

der hintergrund daran liegt einfach daran

variable == high   -> abfrage
variable = high  ->  zuweisung

die überlegung  war im code
somit kann ein programmierfehler im code erkannt werden.

High ==  variable    -> abfrage
high = variable  ->  fehlermeldung des  compilers.

auf alle fälle guter tip
wenns das wirklich ist geb ich ein bier aus  smiley-grin

11  International / Deutsch / Logische und / oder Abfrage on: January 19, 2013, 10:12:47 am
Hallo zusammen
freut mich das wir hier auch einen deutschen teil haben
das macht die sache hoffentlich einfacher.

folgende situation bereitet mir momentan  kopfzerbrechen.

ich arbeite mit mehreren Arduino Mega 2560  über  I2C  Bus.

das programm funktioniert sehr gut.

aus einem arduino werden pins eingelesen  im  master wird verarbeitet andere arduinos geben die befehle an pin ausgänge weiter.

nur jetzt bekomme ich gerade graue haare  die oder Abfrage funktioniert einfach nicht.


UND abfrage funktioniert perfekt auch mit vielen variabeln.
der unten genannte code: lese aus buffer  variable E_SIGR_ASR5_HALT  und  E_SIGR_ASR3_HALT , wenn beide 1 sind dann setze ausgangs buffer Variabel A_SIGS_ASH4_HALT auf 1
getestet funktioniert in der anwendung.

Bsp:

Code:

if(HIGH==master_x.dio_get(E_SIGR_ASR5_HALT) && HIGH==master_x.dio_get(E_SIGR_ASR3_HALT))
  {
   master_x.dio_set(A_SIGS_ASH4_HALT,HIGH);
  }

ODER abfrage leider gar nicht
Wenn ich jetzt statt  und  eine  oder verknüpfung  dann fangen die probleme an
nur wenn beide  variablen  1 sind wird der ausgang gesetzt und sonst nicht. also macht auch in dem unten genannten beispiel der compiler ein und Gatter draus was nicht sein darf.

Code:
if(HIGH==master_x.dio_get(E_SIGR_ASR5_HALT) || HIGH==master_x.dio_get(E_SIGR_ASR5_HALT))
  {
   master_x.dio_set(A_SIGS_ASR4_HALT,HIGH);
  }

Hat jemand von euch schon mal so ein problem gehabt
weil ich hab momentan keine idee wo das problem liegt.

lg
Thomas


12  Using Arduino / Programming Questions / Re: Nointerrupt and Wire Bus I2C on: October 26, 2012, 03:57:21 pm
hello again.

yes nick ill mean  critical section.

the delay5000 only was for testing
normaly there is no delay needed.

the problem is not clear for me.

when the programcounter is at the moment in the bitWrite section
Code:
for(int i = 0; i < E_I2C2_MAX; i++)
    {
    help = digitalRead(i);
    if(help == bitRead(signale_momentan[i/32],i%32))
      {
      bitWrite(signale_entprellt[i/32],(i%32),help);
     
      }
    bitWrite(signale_momentan[i/32],(i%32),help);
    }
and at same time there comes the interupt from wire request.
he would jump out and do the wire-request routine.

is there be a chance that some bits got lost when the programcounter go back into the bitwriteloop

so ill try out the
Code:
noInterrupts();
..
..
..
interrupts();
[code]

but wire request  dont care of  noInterupts ill think.

some ideas too this?

@ pylon
thanx for info
because mircochip  pic  controller need 1.  set pin to low and 2. set as output.






 
[/code]
13  Using Arduino / Programming Questions / Re: Nointerrupt and Wire Bus I2C on: October 25, 2012, 09:37:05 am
sry im newbie  smiley-red

ill edited it.

i have also a second question to my project.
other microcontrollers
need an defined order

1) set output pin as low
2) set pin as output.

is there a mayor order for arduino controllers?

thx
Thomas
14  Using Arduino / Programming Questions / Re: Nointerrupt and Wire Bus I2C on: October 23, 2012, 10:28:43 am
hello Nick

this is the code.
***************************************************
Code:

#include <Wire.h>
#include "c:\\temp\\signals.h"

//#define DEBUG

unsigned long signale_momentan[MAX_ANZAHL_SIGNALE_SPEICHER_UL]; //wahre groesse: 1+E_I2C2_MAX/8
unsigned long signale_entprellt[MAX_ANZAHL_SIGNALE_SPEICHER_UL];

void setup()
{
  
  
  for(int i = 0; i < E_I2C2_MAX; i++)
  {
    pinMode(i, INPUT);  
  }

  Wire.begin(I2C2);                // join i2c bus with address #2
  Wire.onRequest(requestEvent); // register event
#ifdef DEBUG  
  Serial.begin(9600);  // start serial for output
#endif
  
  for(int i = 0; i < E_I2C2_MAX; i++)
  {
    bitWrite(signale_entprellt[i/32],(i%32),i%2/*digitalRead(i)*/);
    bitWrite(signale_momentan[i/32],(i/32),i%2/*digitalRead(i)*/);
  }
}

void loop()
{
  int help;
  
  delay(20);
  
  //noInterrupts();
  
  for(int i = 0; i < E_I2C2_MAX; i++)
  {
    help = digitalRead(i);
    if(help == bitRead(signale_momentan[i/32],i%32))
    {
      bitWrite(signale_entprellt[i/32],(i%32),help);
      
    }
    bitWrite(signale_momentan[i/32],(i%32),help);
  }
  
  //interrupts();
  
#ifdef DEBUG  
  Serial.println(signale_entprellt[0],BIN);
  Serial.println(signale_entprellt[1],BIN);
  Serial.println(sizeof(unsigned long));
  delay(1000);
#endif

#ifdef DEBUG
  signale_entprellt[0] = 0x12345678;
  signale_entprellt[1] = 0x87654321;
#endif
  
}

// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
  uint8_t* adress;
  
  adress = (uint8_t*) signale_entprellt;
  
  Wire.write(adress,sizeof(signale_entprellt));

}


******************************************
Quote

when Wire.onRequest(requestEvent); starts he jump out of the  sensible code and do the request event.

How do you know this?

ill tested it with delay function  
between  the  no interupt tags

F.e
Code:

noInterrupts();
 
  for(int i = 0; i < E_I2C2_MAX; i++)
  {
    help = digitalRead(i);
    if(help == bitRead(signale_momentan[i/32],i%32))
    {
      bitWrite(signale_entprellt[i/32],(i%32),help);
    
    }
    bitWrite(signale_momentan[i/32],(i%32),help);
  }
  delay(5000);
  interrupts();



if i am right the programcounter wait  5 sec between noInterrupts() and interrupts()

the request events start  every  0.5 second.
so  5 seconds long the requestevent cant recive data.
but in tests  , the master at IC2 bus get every  0,5 seconds data from the slave.

so my opinion is  noInterrupts() and interrupts() did not work for Wire interrupts.

thx
Thomas


15  Using Arduino / Programming Questions / Nointerrupt and Wire Bus I2C on: October 18, 2012, 12:21:01 pm
Hello
ill have some question
about
nointerrupt and  I2C wire bus.

my idea is  some sensible code of my project  save with  Nointerrupt
*****
// beginn sensible code

noInterrupts();
 
  for(int i = 0; i < E_I2C2_MAX; i++)
  {
    help = digitalRead(i);
    if(help == bitRead(signale_momentan[i/32],i%32))
    {
      bitWrite(signale_entprellt[i/32],(i%32),help);
     
    }
    bitWrite(signale_momentan[i/32],(i%32),help);
  }
 
  interrupts();

//end of sensible code
***


also ill use the
Wire.onRequest(requestEvent);

but the problem ist  Nointerrupts(); and interrupts();
dont work for this.
when Wire.onRequest(requestEvent); starts he jump out of the  sensible code and do the request event.

my question:
is there some idea that  Wire.onRequest(requestEvent);  didnt  break the  sensible code lines?

thanks for some ideas too this.


Pages: [1]