pat9125 filament sensor
sg homing - bug fix + homing multiple axes simultanously (AXIS_MASK)
This commit is contained in:
parent
a21bef25c3
commit
ec7678a25f
13 changed files with 666 additions and 426 deletions
Firmware
|
@ -1,107 +1,107 @@
|
|||
#include "swspi.h"
|
||||
|
||||
|
||||
#ifdef SWSPI_RPI
|
||||
#include <bcm2835.h>
|
||||
#define GPIO_INP(gpio) bcm2835_gpio_fsel(gpio, BCM2835_GPIO_FSEL_INPT)
|
||||
#define GPIO_OUT(gpio) bcm2835_gpio_fsel(gpio, BCM2835_GPIO_FSEL_OUTP)
|
||||
#define GPIO_SET(gpio) bcm2835_gpio_write(gpio, HIGH)
|
||||
#define GPIO_CLR(gpio) bcm2835_gpio_write(gpio, LOW)
|
||||
#define GPIO_GET(gpio) (bcm2835_gpio_lev(gpio) != LOW)
|
||||
#define DELAY(delay) usleep(delay)
|
||||
#endif //SWSPI_RPI
|
||||
|
||||
#ifdef SWSPI_AVR
|
||||
#include "Arduino.h"
|
||||
#define GPIO_INP(gpio) pinMode(gpio, INPUT)
|
||||
#define GPIO_OUT(gpio) pinMode(gpio, OUTPUT)
|
||||
#define GPIO_SET(gpio) digitalWrite(gpio, HIGH)
|
||||
#define GPIO_CLR(gpio) digitalWrite(gpio, LOW)
|
||||
#define GPIO_GET(gpio) (digitalRead(gpio) != LOW)
|
||||
#define DELAY(delay) delayMicroseconds(delay)
|
||||
#endif //SWSPI_AVR
|
||||
|
||||
#if (SWSPI_POL != 0)
|
||||
#define SWSPI_SCK_UP GPIO_CLR(SWSPI_SCK)
|
||||
#define SWSPI_SCK_DN GPIO_SET(SWSPI_SCK)
|
||||
#else
|
||||
#define SWSPI_SCK_UP GPIO_SET(SWSPI_SCK)
|
||||
#define SWSPI_SCK_DN GPIO_CLR(SWSPI_SCK)
|
||||
#endif
|
||||
|
||||
|
||||
void swspi_init()
|
||||
{
|
||||
GPIO_INP(SWSPI_MISO);
|
||||
GPIO_OUT(SWSPI_MOSI);
|
||||
GPIO_OUT(SWSPI_SCK);
|
||||
GPIO_OUT(SWSPI_CS);
|
||||
GPIO_CLR(SWSPI_MOSI);
|
||||
SWSPI_SCK_DN;
|
||||
GPIO_SET(SWSPI_CS);
|
||||
}
|
||||
|
||||
#if (SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
void swspi_tx(unsigned char tx)
|
||||
{
|
||||
GPIO_OUT(SWSPI_MOSI);
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
if (tx & 0x80) GPIO_SET(SWSPI_MOSI);
|
||||
else GPIO_CLR(SWSPI_MOSI);
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_DN;
|
||||
tx <<= 1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char swspi_rx()
|
||||
{
|
||||
GPIO_INP(SWSPI_MISO);
|
||||
unsigned char rx = 0;
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
rx <<= 1;
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
rx |= GPIO_GET(SWSPI_MISO)?1:0;
|
||||
SWSPI_SCK_DN;
|
||||
}
|
||||
return rx;
|
||||
}
|
||||
|
||||
#else //(SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
unsigned char swspi_txrx(unsigned char tx)
|
||||
{
|
||||
unsigned char rx = 0;
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
rx <<= 1;
|
||||
if (tx & 0x80) GPIO_SET(SWSPI_MOSI);
|
||||
else GPIO_CLR(SWSPI_MOSI);
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
rx |= GPIO_GET(SWSPI_MISO)?1:0;
|
||||
SWSPI_SCK_DN;
|
||||
tx <<= 1;
|
||||
}
|
||||
return rx;
|
||||
}
|
||||
|
||||
#endif //(SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
void swspi_start()
|
||||
{
|
||||
GPIO_CLR(SWSPI_CS);
|
||||
}
|
||||
|
||||
void swspi_stop()
|
||||
{
|
||||
GPIO_SET(SWSPI_CS);
|
||||
}
|
||||
#include "swspi.h"
|
||||
|
||||
|
||||
#ifdef SWSPI_RPI
|
||||
#include <bcm2835.h>
|
||||
#define GPIO_INP(gpio) bcm2835_gpio_fsel(gpio, BCM2835_GPIO_FSEL_INPT)
|
||||
#define GPIO_OUT(gpio) bcm2835_gpio_fsel(gpio, BCM2835_GPIO_FSEL_OUTP)
|
||||
#define GPIO_SET(gpio) bcm2835_gpio_write(gpio, HIGH)
|
||||
#define GPIO_CLR(gpio) bcm2835_gpio_write(gpio, LOW)
|
||||
#define GPIO_GET(gpio) (bcm2835_gpio_lev(gpio) != LOW)
|
||||
#define DELAY(delay) usleep(delay)
|
||||
#endif //SWSPI_RPI
|
||||
|
||||
#ifdef SWSPI_AVR
|
||||
#include "Arduino.h"
|
||||
#define GPIO_INP(gpio) pinMode(gpio, INPUT)
|
||||
#define GPIO_OUT(gpio) pinMode(gpio, OUTPUT)
|
||||
#define GPIO_SET(gpio) digitalWrite(gpio, HIGH)
|
||||
#define GPIO_CLR(gpio) digitalWrite(gpio, LOW)
|
||||
#define GPIO_GET(gpio) (digitalRead(gpio) != LOW)
|
||||
#define DELAY(delay) delayMicroseconds(delay)
|
||||
#endif //SWSPI_AVR
|
||||
|
||||
#if (SWSPI_POL != 0)
|
||||
#define SWSPI_SCK_UP GPIO_CLR(SWSPI_SCK)
|
||||
#define SWSPI_SCK_DN GPIO_SET(SWSPI_SCK)
|
||||
#else
|
||||
#define SWSPI_SCK_UP GPIO_SET(SWSPI_SCK)
|
||||
#define SWSPI_SCK_DN GPIO_CLR(SWSPI_SCK)
|
||||
#endif
|
||||
|
||||
|
||||
void swspi_init()
|
||||
{
|
||||
GPIO_INP(SWSPI_MISO);
|
||||
GPIO_OUT(SWSPI_MOSI);
|
||||
GPIO_OUT(SWSPI_SCK);
|
||||
GPIO_OUT(SWSPI_CS);
|
||||
GPIO_CLR(SWSPI_MOSI);
|
||||
SWSPI_SCK_DN;
|
||||
GPIO_SET(SWSPI_CS);
|
||||
}
|
||||
|
||||
#if (SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
void swspi_tx(unsigned char tx)
|
||||
{
|
||||
GPIO_OUT(SWSPI_MOSI);
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
if (tx & 0x80) GPIO_SET(SWSPI_MOSI);
|
||||
else GPIO_CLR(SWSPI_MOSI);
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_DN;
|
||||
tx <<= 1;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char swspi_rx()
|
||||
{
|
||||
GPIO_INP(SWSPI_MISO);
|
||||
unsigned char rx = 0;
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
rx <<= 1;
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
rx |= GPIO_GET(SWSPI_MISO)?1:0;
|
||||
SWSPI_SCK_DN;
|
||||
}
|
||||
return rx;
|
||||
}
|
||||
|
||||
#else //(SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
unsigned char swspi_txrx(unsigned char tx)
|
||||
{
|
||||
unsigned char rx = 0;
|
||||
unsigned char i = 0; for (; i < 8; i++)
|
||||
{
|
||||
rx <<= 1;
|
||||
if (tx & 0x80) GPIO_SET(SWSPI_MOSI);
|
||||
else GPIO_CLR(SWSPI_MOSI);
|
||||
DELAY(SWSPI_DEL);
|
||||
SWSPI_SCK_UP;
|
||||
DELAY(SWSPI_DEL);
|
||||
rx |= GPIO_GET(SWSPI_MISO)?1:0;
|
||||
SWSPI_SCK_DN;
|
||||
tx <<= 1;
|
||||
}
|
||||
return rx;
|
||||
}
|
||||
|
||||
#endif //(SWSPI_MOSI == SWSPI_MISO)
|
||||
|
||||
void swspi_start()
|
||||
{
|
||||
GPIO_CLR(SWSPI_CS);
|
||||
}
|
||||
|
||||
void swspi_stop()
|
||||
{
|
||||
GPIO_SET(SWSPI_CS);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue