INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Nano als I/O Erweiterung für den RPi
11.01.2020, 09:37
Beitrag #9
RE: Nano als I/O Erweiterung für den RPi
Danke für die Antwort.

Hoffentlich finde ich bald die Antwort warum ich von Forum keine Hinweise bekomme das es was neues gibt.

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 14:17
Beitrag #10
RE: Nano als I/O Erweiterung für den RPi
(10.01.2020 10:41)DerkleinePunk schrieb:  .....
Soll ich jetzt lieber pollen also pro Zeit einheit fragen Nano hast du was oder ein Digipin Opfern und ein Int Signal senden ?
Jemand eine Meinung ?

Da du mit deinem Nano hier nichts zeitkritisches machst, ist es völlig ausreichend, wenn du pollst.
Einen IRQ dafür zu nehmen ist deutlich komplizierter und hier völlig unnütz.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 14:18
Beitrag #11
RE: Nano als I/O Erweiterung für den RPi
(11.01.2020 09:37)DerkleinePunk schrieb:  Danke für die Antwort.

Hoffentlich finde ich bald die Antwort warum ich von Forum keine Hinweise bekomme das es was neues gibt.

Evtl. falsche Einstellungen gewählt ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 16:59
Beitrag #12
RE: Nano als I/O Erweiterung für den RPi
Thema Email Benachrichtigung:
Laut Darstellung im Benutzerprofil habe ich das Thema Abonniert. Im Spam Ordner ist auch nichts.

Thema INT:
Da habe ich mich wohl falsch ausgedrückt.
Ich meine nicht einen Interrupt auf dem Controller sonder wollte damit Ausdrücken das wie bei Deversen Sensor Platinen auch eine Signal Leitung zu machen welche den PI Sagt ich habe was für dich. Das zum Beispiel beim MCP ja auch so wenn den Als Eingang verwendet. Man weiß zwar nicht was sich verändert hat aber das sich was verändert hat und kann dann den MCP Fragen.

Ganz Ehrlich Pollen mag ich nämlich gar nicht klar auf eine MicroController ist das was ganz anderes weil da gibt es ja nicht was "Parallel" Läuft.
Thema ist ja auch der Bus kann ne Menge an Daten Transportieren dann ist schluss da da ja mehr Dran hängt Entlastet das vielleicht den Bus.
Ok für I²C habe ich noch kein Gefühl aber in Sache Netzwerkkarten schon so meine Erfahrungen gemacht (Auch beruflich). Wenn alle nur ein bisschen Pollen sind auch Irgend wann 100 MBit weg.

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2020, 17:13
Beitrag #13
RE: Nano als I/O Erweiterung für den RPi
Ok, das ist dann ja eine andere Sache, bzw. war nicht so rüber gekommen.
Zwischen dem Arduino und dem Pi kannst du das so lösen.
Immer eine Info auf einem Pin senden, wenn eine neuer Messwert vorhanden ist.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2020, 16:24
Beitrag #14
RE: Nano als I/O Erweiterung für den RPi
Code:
#include <EEPROM.h>
#include <Arduino.h>  // for type definitions

const unsigned long crc_table[16] = {
    0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac,
    0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
    0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c,
    0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
  };
  
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
    const byte* p = (const byte*)(const void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          EEPROM.update(ee++, *p++);
    return i;
}

template <class T> int EEPROM_readAnything(int ee, T& value)
{
    byte* p = (byte*)(void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          *p++ = EEPROM.read(ee++);
    return i;
}

unsigned long eeprom_crc32(int pos = 0);

template <class T> unsigned long crc32(T& value) {
  byte* p = (byte*)(void*)&value;
  unsigned long crc = ~0L;

  for (int index = 0 ; index < sizeof(value)  ; ++index) {
    crc = crc_table[(crc ^ p[index]) & 0x0f] ^ (crc >> 4);
    crc = crc_table[(crc ^ (p[index] >> 4)) & 0x0f] ^ (crc >> 4);
    crc = ~crc;
  }
  return crc;
}

Code:
void initializeEEPROM() {
  unsigned long crc;
  EEPROM_readAnything(0, crc);
  EEPROM_readAnything(4, configuration);
  unsigned long crcProm = eeprom_crc32(4);
  DebugPrinter.print(F("crc: 0x"));
  DebugPrinter.println(crc, HEX);
  DebugPrinter.print(F("crcProm: 0x"));
  DebugPrinter.println(crcProm, HEX);
  if((configuration.progd_flag == progdFlagDefault) && (crc == crcProm)) {
    DebugPrinter.println(F("EEPROM good"));
    return;
  }
  DebugPrinter.print(F("progd_flag: 0x"));
  DebugPrinter.println(configuration.progd_flag, HEX);
  configuration.progd_flag = progdFlagDefault;
  configuration.interval = 1000;
  configuration.enableAD = 0xFF;
  configuration.enableDIGI = 0xFF;
  configuration.outputDIGI = 0XFF;
  crc = crc32(configuration);
  DebugPrinter.print(F("crc: 0x"));
  DebugPrinter.println(crc, HEX);
  EEPROM_writeAnything(0, crc);
  EEPROM_writeAnything(4, configuration);
  DebugPrinter.println(F("EEPROM init done"));
}

Debug ausgabe:

crc: 0x5AFFB3C8
crcProm: 0xA7222FBA
progd_flag: 0x5A01
crc: 5AFFB3C8
EEPROM init done
Boot Done

Warum ist das CRC vom speicher Anders ?
Verstehe gerade echt nicht warum.

https://bitbucket.org/numberfive/sdl2gui...nd_IO_I2C/
Das ist alles vom Sketch aber das was man sonst zu Analysieren brauch sollte in den Code Tags vorhanden sein.

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2020, 16:39
Beitrag #15
RE: Nano als I/O Erweiterung für den RPi
Hat das einen besonderen Grund, warum Du die Templates neu schreibst? Die EEPROM-Lib macht das doch bereits. Mit put/get kannst Du beliebige Objekte schreiben/lesen.

Zur CRC: Lass Dir doch mal die beteiligten Bytes als HEX ausgeben und schaue, ob die gleich sind.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2020, 17:48 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2020 17:52 von DerkleinePunk.)
Beitrag #16
RE: Nano als I/O Erweiterung für den RPi
Zitat:Hat das einen besonderen Grund, warum Du die Templates neu schreibst? Die EEPROM-Lib macht das doch bereits. Mit put/get kannst Du beliebige Objekte schreiben/lesen.

Dokumentation nicht Ordentlich gelesen.

Ok einen Fehler habe ich gefunden. EEPROM.length ist eine Konstane die Göße des EEProm ab gibt und nicht wie ich gedachte habe den belegten Speicher.

Aber Funktionieren tut es leider immer noch nicht.

Code:
#include "EEPROMHelper.h"
  
unsigned long eeprom_crc32(int pos) {
  return eeprom_crc32(pos, EEPROM.length());
}

unsigned long eeprom_crc32(int pos, int length) {
  unsigned long crc = ~0L;

  Serial.print(F("eeprom CRC Size "));
  Serial.print(length);
  Serial.println(F(" bytes"));
  
  for (int index = pos ; index < length  ; ++index) {
    crc = crc_table[(crc ^ EEPROM[index]) & 0x0f] ^ (crc >> 4);
    crc = crc_table[(crc ^ (EEPROM[index] >> 4)) & 0x0f] ^ (crc >> 4);
    crc = ~crc;
  }
  return crc;
}

Code:
void initializeEEPROM() {
  unsigned long crc;
  EEPROM.get(0, crc);
  EEPROM.get(4, configuration);
  unsigned long crcProm = eeprom_crc32(4, sizeof(configuration));
  DebugPrinter.print(F("crc: 0x"));
  DebugPrinter.println(crc, HEX);
  DebugPrinter.print(F("crcProm: 0x"));
  DebugPrinter.println(crcProm, HEX);
  if((configuration.progd_flag == progdFlagDefault) && (crc == crcProm)) {
    DebugPrinter.println(F("EEPROM good"));
    return;
  }
  DebugPrinter.print(F("progd_flag: 0x"));
  DebugPrinter.println(configuration.progd_flag, HEX);
  configuration.progd_flag = progdFlagDefault;
  configuration.interval = 1000;
  configuration.enableAD = 0xFF;
  configuration.enableDIGI = 0xFF;
  configuration.outputDIGI = 0XFF;
  crc = crc32(configuration);
  DebugPrinter.print(F("crc: 0x"));
  DebugPrinter.println(crc, HEX);
  EEPROM.put(0, crc);
  EEPROM.put(4, configuration);
  DebugPrinter.println(F("EEPROM init done"));
}

Ausgaben:

eeprom CRC Size 9 bytes
crc: 0x5AFFB3C8
crcProm: 0x1292EC05
progd_flag: 0x5A01
CRC Size 9 bytes
crc: 0x5AFFB3C8
EEPROM init done
Boot Done

Mein Projekt
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schaltuhr Erweiterung 433Mhz Funk volvodidi 17 5.387 12.01.2020 14:50
Letzter Beitrag: hotsystems
  Arduino Nano, Sensoren und Nextion MotD 24 10.614 30.08.2018 10:42
Letzter Beitrag: hotsystems
  Laser mit arduino nano TTL modulieren Wranox 0 3.444 30.07.2015 15:38
Letzter Beitrag: Wranox
  Linienfolger mit Arduino Nano reenoh 16 12.705 27.05.2015 11:04
Letzter Beitrag: reenoh
Wink DSLR mit Arduino Nano steuern. Eichner 12 12.890 25.03.2015 17:27
Letzter Beitrag: Eichner
Rainbow RC Beleuchtungsmodul mit Arduino Nano Kyrill 7 7.979 15.03.2015 14:02
Letzter Beitrag: querkopf71
  Erweiterung für SD: fprintf_, fgets_, fscanf_ HaWe 0 1.925 08.03.2015 17:23
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste