kann ich die GPIO Pins irgendwie (genau wie aus dem Projekt heraus) aus einer neuen Bibliothek ansprechen?
Hintergrund: Ich brauche für meinen iC zusätzlich zum SPI Bus einen GPIO Pin zur Steuerung der zur richtigen Zeit auf low gezogen werden muss, ich brauche ihn also in der Library.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe mich mitlerweile durch die IoDrvGPIO gekämpft und geschaut wie der Zugriff erfolgt.
Versuche ich nun in meiner Bib mit "SysSharedMemoryOpen2" das sharedMemory Objekt zu öffnen (Create liefert duplikat) wird mir dies mit Okay quittiert.
Sobald ich nun aber bspw. die getType() Methode kopiere und mit meinem Programm ausführe stürzt mir der GPIO Bus ab. "Der Bus läuft nicht"...Das Problem ist nun selbst wenn ich den Code wieder/entferne oder ein neues Projekt erstelle ich bekomme den GPIO Bus nicht mehr zum laufen ausser wenn ich Codesys KOMPLETT neuinstalliere?!
Jemand einen Lösungvorschlag die GPIOs wieder zum laufen zu bringen bevor ich dem anderen Problem nachgehe?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
wenn du dir original GPIO Bibliothek wieder installierst müsste ja alles wieder gehen.
CODESYS neu zu installieren ist niemals nötig (jedenfalls kenne ich bisher keinen Fall)
Dann noch die Frage was willst du genau ändern welche GPIO's fehlen die du ergänzen wolltest?
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe die GPIO Bibliothek gar nicht verändert!
Ich versuche nur sozusagen parallel auf einen GPIO (25) aus meinem Hauptprogramm zuzugreifen (ohne den Umweg über den GPIO Reiter), da ich den GPIO 25 in meiner SPI library brauche! Ich habe eine selbsterstelle bibliothek die Zugriff auf die (einen) GPIO braucht.
Folgendes habe ich getan (mehr oder weniger extrahiert aus der IoDrvGPIO):
PROGRAMPLC_PRGVARCONSTANT
  GPIO_BASE : DWORD :=16#3F200000;
  BLOCK_SIZE : DWORD :=(4*1024);  END_VARVAR
  _hShmGPIOBASE : SysTypes.RTS_IEC_HANDLE :=RTS_INVALID_HANDLE;
  ul: UDINT;
  strEmpty: STRING(2);
  Result1,Result2: UDINT;
  ulOn: UDINT :=16#00;END_VAR//--------------------------------------IF_hShmGPIOBASE=RTS_INVALID_HANDLETHEN
  ul :=BLOCK_SIZE;
  _hShmGPIOBASE :=SysSharedMemoryOpen2(pszName:=strEmpty , ulPhysicalAddress:=GPIO_BASE , pulSize:=ADR(ul), pResult:=ADR(Result1));END_IF//HoledieaktuellenWerteSysSharedMemoryRead(_hShmGPIOBase, 16#C, ADR(ul), 4, ADR(Result2));//ÄnderGPIO25aufOutputIFResult2=0THEN
  ul.15 :=TRUE;
  ul.16 :=FALSE;
  ul.17 :=FALSE;
  SysSharedMemoryWrite(_hShmGPIOBase, 16#C, ADR(ul), 4, ADR(Result2));
  IFResult2=0THEN
    //AktiviereGPIO25
    ulOn :=ulOnORSHL(UDINT#1, UDINT#25);
    SysSharedMemoryWrite(_hShmGPIOBase, 16#1C, ADR(ulOn), 4, ADR(Result2));
  END_IFEND_IF
Wenn ich das nun tue funktioniert die GPIO Bibliothek scheinbar nicht mehr. ABER: selbst wenn ich ein neues projekt erstelle und das leere projekt auf den PI lade funktionieren die GPIOs nicht mehr (Der Bus läuft nicht)
Gibt es eine Lösung den GPIO zuzugreifen aus meiner SPI Bibliothek, falls der Code oben so nicht geht.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
kann ich die GPIO Pins irgendwie (genau wie aus dem Projekt heraus) aus einer neuen Bibliothek ansprechen?
Hintergrund: Ich brauche für meinen iC zusätzlich zum SPI Bus einen GPIO Pin zur Steuerung der zur richtigen Zeit auf low gezogen werden muss, ich brauche ihn also in der Library.
Ich habe mich mitlerweile durch die IoDrvGPIO gekämpft und geschaut wie der Zugriff erfolgt.
Versuche ich nun in meiner Bib mit "SysSharedMemoryOpen2" das sharedMemory Objekt zu öffnen (Create liefert duplikat) wird mir dies mit Okay quittiert.
Sobald ich nun aber bspw. die getType() Methode kopiere und mit meinem Programm ausführe stürzt mir der GPIO Bus ab. "Der Bus läuft nicht"...Das Problem ist nun selbst wenn ich den Code wieder/entferne oder ein neues Projekt erstelle ich bekomme den GPIO Bus nicht mehr zum laufen ausser wenn ich Codesys KOMPLETT neuinstalliere?!
Jemand einen Lösungvorschlag die GPIOs wieder zum laufen zu bringen bevor ich dem anderen Problem nachgehe?
Hi,
wenn du dir original GPIO Bibliothek wieder installierst müsste ja alles wieder gehen.
CODESYS neu zu installieren ist niemals nötig (jedenfalls kenne ich bisher keinen Fall)
Dann noch die Frage was willst du genau ändern welche GPIO's fehlen die du ergänzen wolltest?
Grüße
Edwin
Ich habe die GPIO Bibliothek gar nicht verändert!
Ich versuche nur sozusagen parallel auf einen GPIO (25) aus meinem Hauptprogramm zuzugreifen (ohne den Umweg über den GPIO Reiter), da ich den GPIO 25 in meiner SPI library brauche! Ich habe eine selbsterstelle bibliothek die Zugriff auf die (einen) GPIO braucht.
Folgendes habe ich getan (mehr oder weniger extrahiert aus der IoDrvGPIO):
Wenn ich das nun tue funktioniert die GPIO Bibliothek scheinbar nicht mehr. ABER: selbst wenn ich ein neues projekt erstelle und das leere projekt auf den PI lade funktionieren die GPIOs nicht mehr (Der Bus läuft nicht)
Gibt es eine Lösung den GPIO zuzugreifen aus meiner SPI Bibliothek, falls der Code oben so nicht geht.