#pragma once #include #include "config.h" // ============================================================ // Bitbang-SPI für ENC28J60 auf PC6/PC7/PC8/PC9 // ENC28J60 verwendet SPI Mode 0 (CPOL=0, CPHA=0) // ============================================================ static inline void eth_spi_init() { pinMode(ETH_SCK_PIN, OUTPUT); digitalWrite(ETH_SCK_PIN, LOW); pinMode(ETH_MOSI_PIN, OUTPUT); digitalWrite(ETH_MOSI_PIN, LOW); pinMode(ETH_MISO_PIN, INPUT); pinMode(ETH_CS_PIN, OUTPUT); digitalWrite(ETH_CS_PIN, HIGH); } static inline void eth_cs_low() { digitalWrite(ETH_CS_PIN, LOW); } static inline void eth_cs_high() { digitalWrite(ETH_CS_PIN, HIGH); } static inline uint8_t eth_spi_transfer(uint8_t out) { uint8_t in = 0; for (int8_t i = 7; i >= 0; i--) { digitalWrite(ETH_MOSI_PIN, (out >> i) & 1); digitalWrite(ETH_SCK_PIN, HIGH); in = (in << 1) | digitalRead(ETH_MISO_PIN); digitalWrite(ETH_SCK_PIN, LOW); } return in; }