endlich ein SPI sclk signal

This commit is contained in:
Tristan Krause 2019-03-25 13:00:22 +01:00
parent 419e37eeae
commit 08795e7547
10 changed files with 172 additions and 21 deletions

View file

@ -1 +1 @@
<AVRStudio><MANAGEMENT><ProjectName>B15F</ProjectName><Created>22-Mar-2019 14:29:54</Created><LastEdit>22-Mar-2019 16:03:17</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>22-Mar-2019 14:29:54</Created><Version>4</Version><Build>4, 19, 0, 730</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>B15F.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>ATmega1284.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>spi.cpp</SOURCEFILE><SOURCEFILE>main.cpp</SOURCEFILE><SOURCEFILE>Makefile</SOURCEFILE><HEADERFILE>spi.h</HEADERFILE><OTHERFILE>default\B15F.lss</OTHERFILE><OTHERFILE>default\B15F.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>c++</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega128</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>c++\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>Makefile</EXTERNALMAKEFILE><PART>atmega1284</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.cpp</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS><INCLUDE>C:\avr8-gnu-toolchain-win32_x86\avr\include\</INCLUDE></INCDIRS><LIBDIRS><LIBDIR>C:\avr8-gnu-toolchain-win32_x86\avr\lib\</LIBDIR></LIBDIRS><LIBS><LIB>libc.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>0</USES_WINAVR><GCC_LOC>C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe</GCC_LOC><MAKE_LOC>C:\WinAVR-20100110\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>F:\spi.h</Name><Name>F:\spi.cpp</Name><Name>F:\main.cpp</Name><Name>F:\Makefile</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="0" orderaddress="0" ordergroup="0"/></IOView><Files><File00000><FileId>00000</FileId><FileName>spi.h</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>main.cpp</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>Makefile</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>spi.cpp</FileName><Status>1</Status></File00003></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
<AVRStudio><MANAGEMENT><ProjectName>B15F</ProjectName><Created>22-Mar-2019 14:29:54</Created><LastEdit>25-Mar-2019 12:57:42</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>22-Mar-2019 14:29:54</Created><Version>4</Version><Build>4, 19, 0, 730</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>B15F.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>F:\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>ATmega1284.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>spi.cpp</SOURCEFILE><SOURCEFILE>main.cpp</SOURCEFILE><SOURCEFILE>Makefile</SOURCEFILE><SOURCEFILE>mcp23s17.cpp</SOURCEFILE><HEADERFILE>spi.h</HEADERFILE><HEADERFILE>mcp23s17.h</HEADERFILE><OTHERFILE>default\B15F.lss</OTHERFILE><OTHERFILE>default\B15F.map</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>c++</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>atmega128</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>c++\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS/><INCDIRS/><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>Makefile</EXTERNALMAKEFILE><PART>atmega1284</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>B15F.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.cpp</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS><INCLUDE>C:\avr8-gnu-toolchain-win32_x86\avr\include\</INCLUDE></INCDIRS><LIBDIRS><LIBDIR>C:\avr8-gnu-toolchain-win32_x86\avr\lib\</LIBDIR></LIBDIRS><LIBS><LIB>libc.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -DF_CPU=20000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>0</USES_WINAVR><GCC_LOC>C:\avr8-gnu-toolchain-win32_x86\bin\avr-g++.exe</GCC_LOC><MAKE_LOC>C:\WinAVR-20100110\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><ProjectFiles><Files><Name>F:\spi.h</Name><Name>F:\mcp23s17.h</Name><Name>F:\spi.cpp</Name><Name>F:\main.cpp</Name><Name>F:\Makefile</Name><Name>F:\mcp23s17.cpp</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="1" orderaddress="1" ordergroup="1"/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.cpp</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>Makefile</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>spi.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>spi.cpp</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>mcp23s17.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>mcp23s17.cpp</FileName><Status>1</Status></File00005></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>

BIN
B15F.elf

Binary file not shown.

View file

@ -1,14 +1,24 @@
:100000000C9446000C9450000C9450000C9450003A
:100010000C9450000C9450000C9450000C94500020
:100020000C9450000C9450000C9450000C94500010
:100030000C9450000C9450000C9450000C94500000
:100040000C9450000C9450000C9450000C945000F0
:100050000C9450000C9450000C9450000C945000E0
:100060000C9450000C9450000C9450000C945000D0
:100070000C9450000C9450000C9450000C945000C0
:100080000C9450000C9450000C94500011241FBE8E
:10009000CFEFD0E4DEBFCDBF0E9457000C946600C6
:1000A0000C9400000895259A2698279A0895CF93D6
:1000B000DF931F92CDB7DEB7CE0101960E945200AA
:1000C00080E090E00F90DF91CF910895F894FFCFFA
:100000000C9447000C9464000C9464000C946400FD
:100010000C9464000C9464000C9464000C946400D0
:100020000C9464000C9464000C9464000C946400C0
:100030000C9464000C9464000C9464000C946400B0
:100040000C9464000C9464000C9464000C946400A0
:100050000C9464000C9464000C9464000C94640090
:100060000C9464000C9464000C9464000C94640080
:100070000C9464000C9464000C9464000C94640070
:100080000C9464000C9464000C9464009F00112490
:100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6
:1000A00001C01D92A430B207E1F710E0C7E4D0E030
:1000B00004C02197FE010E94AA00C634D107C9F7E7
:1000C0000E9495000C94B3000C9400000895259AAA
:1000D0002698279A529A539A549A80EB84B980E5CD
:1000E0008CBD81E08DBD08955A985B985C9860FD49
:1000F0005A9A61FD5B9A62FD5C9A08956EBD0DB4DB
:1001000007FEFDCF87E893E10197F1F700C00000FB
:100110008EB50895FC01718360834283089560E485
:10012000FC01808191810C947E0083E091E00E942B
:10013000670088E08EBD0DB407FEFDCFFBCF83E0E6
:1001400091E00E94660042E063E071E080E091E0AF
:100150000C948A00EE0FFF1F0024001C0BBE0790BA
:0A016000F691E02D0994F894FFCF0A
:00000001FF

View file

@ -12,7 +12,7 @@ OUTPUT = B15F.elf
HEX = B15F.hex
CFLAGS = -std=c++14 -O3 -mmcu=atmega1284 -DF_CPU=20000000 -DPIO_DISABLE_I2C
LDFLAGS =
OBJECTS = main.o spi.o
OBJECTS = main.o spi.o mcp23s17.o
COMPILE = $(COMPILER_PATH) $(CFLAGS)

View file

@ -1,7 +1,21 @@
#include <avr/io.h>
#include "spi.h"
#include <avr/interrupt.h>
#include <util/delay.h>
#include "mcp23s17.h"
SPI spi;
MCP23S17 beba0(spi, SPIADR::BEBA0);
int main() {
SPI spi_master;
spi.init();
while(1) {
SPDR = 8;
while(!(SPSR & _BV(SPIF)));
//spi.pushByte(8);
}
return 0;
}

20
main.hex Normal file
View file

@ -0,0 +1,20 @@
:100000000C9446000C9450000C9450000C9450003A
:100010000C9450000C9450000C9450000C94500020
:100020000C9450000C9450000C9450000C94500010
:100030000C9450000C9450000C9450000C94500000
:100040000C9450000C9450000C9450000C945000F0
:100050000C9450000C9450000C9450000C945000E0
:100060000C9450000C9450000C9450000C945000D0
:100070000C9450000C9450000C9450000C945000C0
:100080000C9450000C9450000C94500011241FBE8E
:10009000CFEFD0E4DEBFCDBF0E9486000C9490006D
:1000A0000C940000CF93DF93CDB7DEB784E290E0ED
:1000B00024E230E0F9012081206BFC0120838CE4F4
:1000C00090E021E5FC0120830000DF91CF910895AD
:1000D000CF93DF931F92CDB7DEB789838EE490E094
:1000E0002981FC0120838DE490E0FC0180818095D2
:1000F000881F8827881F882309F0F5CF8EE490E0B9
:10010000FC0180810F90DF91CF910895CF93DF9311
:10011000CDB7DEB70E94520080E00E946800FCCF9D
:04012000F894FFCF81
:00000001FF

34
mcp23s17.cpp Normal file
View file

@ -0,0 +1,34 @@
#include "mcp23s17.h"
MCP23S17::MCP23S17(SPI& spi, uint8_t adr) : spi(spi), adr(adr)
{
}
void MCP23S17::setPort(uint8_t port) const
{
spi.pushByte(0x40);
/*
spi.setAdr(0);
_delay_ms(1);
spi.setAdr(adr);
spi.pushByte(0x40); //
spi.pushByte(0x00); // DIR A
spi.pushByte(0x00); // alle ausgang
spi.setAdr(0);
_delay_ms(1);
spi.setAdr(adr);
spi.pushByte(0x40);
spi.pushByte(0x12);
spi.pushByte(0xF0);
spi.setAdr(0);
/*while(1) {
PORTB ^= _BV(PB7);
_delay_ms(1);
}*/
}

17
mcp23s17.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef MCP23S17_H
#define MCP23S17_H
#include "spi.h"
class MCP23S17
{
public:
MCP23S17(SPI&, uint8_t);
void setPort(uint8_t) const;
private:
SPI& spi;
const uint8_t adr;
};
#endif // MCP23S17_H

42
spi.cpp
View file

@ -6,7 +6,49 @@ SPI::SPI(void)
void SPI::init(void) const
{
// Konfiguriere SPI DDRs
dMode(MOSI, OUT);
dMode(MISO, IN);
dMode(SCLK, OUT);
// Konfiguriere DMUX DDRs
dMode(DMUX1, OUT);
dMode(DMUX2, OUT);
dMode(DMUX3, OUT);
DDRB = 0xB0;
// aktiviere SPI, Master Modus, SPI Modus 0
// F_SPI = F_CPU / 2 (prescaler 2)
SPCR = _BV(SPE) | _BV(MSTR);
SPSR = _BV(SPI2X);
}
/*void SPI::setFreq(uint32_t freq) const
{
}*/
void SPI::setAdr(uint8_t adr) const
{
dWrite(DMUX1, 0);
dWrite(DMUX2, 0);
dWrite(DMUX3, 0);
if(adr & 0x01)
dWrite(DMUX1, 1);
if(adr & 0x02)
dWrite(DMUX2, 1);
if(adr & 0x04)
dWrite(DMUX3, 1);
}
uint8_t SPI::pushByte(uint8_t b) const
{
SPDR = b;
while(!(SPSR & _BV(SPIF)));
_delay_ms(1);
return SPDR;
}

22
spi.h
View file

@ -1,18 +1,32 @@
#ifndef SPI_MASTER_H
#define SPI_MASTER_H
#ifndef SPI_H
#define SPI_H
#include <util/delay.h>
#include <stdint.h>
#include "pio.h"
#define MOSI B5
#define MISO B6
#define SCLK B7
class SPI {
#define DMUX1 D2
#define DMUX2 D3
#define DMUX3 D4
enum SPIADR {
BEBA0 = 2,
BEBA1 = 3,
};
class SPI
{
public:
SPI(void);
void init(void) const;
//void setFreq(uint32_t) const;
void setAdr(uint8_t) const;
uint8_t pushByte(uint8_t) const;
};
#endif
#endif // SPI_H