endlich ein SPI sclk signal
This commit is contained in:
parent
419e37eeae
commit
08795e7547
2
B15F.aps
2
B15F.aps
|
@ -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>
|
||||
|
|
36
B15F.hex
36
B15F.hex
|
@ -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
|
||||
|
|
2
Makefile
2
Makefile
|
@ -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)
|
||||
|
|
18
main.cpp
18
main.cpp
|
@ -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
20
main.hex
Normal 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
34
mcp23s17.cpp
Normal 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
17
mcp23s17.h
Normal 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
42
spi.cpp
|
@ -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
22
spi.h
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue