Arduino UNO => Takt und serielle Daten erzeugen

OP #7892883
Lesenswert?

Hallo,

möchte mit Arduino UNO anhängende serielle Datenausgabe erzeugen. Wenn man mit 100kHz taktet braucht es keine Pause zwischen Datenbyte 1 und 2, da t(nxt) > 4ms erfüllt ist.

Meine Frage: wie realisiere ich obigen Takt ubd Datenausgabe möglichst simpel auf dem UNO (mit sketch). Sprich gibt es eine Bibliothek die genau das macht. I2C geht ja nicht, da diese Start und Stopsequenzen hat. Sind in meiner Anwendung immer 8 Bit ohne Start, Stop und Prüfbit.

Falls jemand wissen möchte wofpr ich das brauche, der kann im Unterforum "Platinen" unter "PLCC Adapter" nachsehen.

Grüße Marco

Angehängte Dateien:
#7892910
Lesenswert?

Das sieht mir nach einem Anwendungsfall für SPI aus. https://docs.arduino.cc/learn/communication/spi/

Alternativ kannst du es selbst programmieren, auf Basis direkter Zugriffe auf die Pins und Warteschleifen (delay). Man braucht nicht für jede Pillepalle eine Library.

Marco S. schrieb:

Mit Funktion Serial.print

Sicher nicht. Die Serial Klasse kann mur asynchrone Ausgabe ohne Taktsignal, ohne selbst definierbare Pausen und außerdem ist der einzige serielle Port gereits mit dem USB-UART belegt.

#7892975
Lesenswert?

Grundsätzlich kannst du SPI verwenden.

Falls deine Anwendung nicht "zeitkritisch" ist, kannst es auch selber mit nem PIN raustackten. Erinnert mich an mein LED Treiber IC von vor 2 Wochen.

1
void send(uint8_t addr_cmd, uint8_t *data, size_t length)
2
{
3
  digitalWrite(cs_pin, LOW);
4
  
5
  send_byte(addr_cmd);
6
  
7
  for (size_t i=0; i<length; i++)
8
    send_byte(data[i]);
9
  
10
  digitalWrite(cs_pin, HIGH);
11
}
12

13
void send_byte(uint8_t data)
14
{
15
  for (uint8_t i=0; i<8; i++)
16
  {
17
    digitalWrite(clk_pin, LOW);
18
    
19
    digitalWrite(data_pin, data & 1 ? HIGH : LOW);
20
    data >>= 1;
21
    
22
    digitalWrite(clk_pin, HIGH);
23
  }
24
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren