dac funktioniert

This commit is contained in:
Tristan Krause 2019-03-25 15:02:24 +01:00
parent d3afcc2f37
commit 472d0135df
8 changed files with 124 additions and 65 deletions

BIN
B15F.elf

Binary file not shown.

View file

@ -1,50 +1,63 @@
:100000000C9447000C9464000C9464000C946400FD
:100010000C9464000C9464000C9464000C946400D0
:100020000C9464000C9464000C9464000C946400C0
:100020000C9466000C9464000C9464000C946400BE
:100030000C9464000C9464000C9464000C946400B0
:100040000C9464000C9464000C9464000C946400A0
:100050000C9464000C9464000C9464000C94640090
:100060000C9464000C9464000C9464000C94640080
:100070000C9464000C9464000C9464000C94640070
:100080000C9464000C9464000C94640070011124BE
:100080000C9464000C9464000C946400C601112468
:100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6
:1000A00001C01D92A430B207E1F710E0C7E4D0E030
:1000B00004C02197FE010E947B01C634D107C9F715
:1000C0000E9458010C9484010C9400000895249A15
:1000D000259A2698279A529A539A549A80E58CBD6D
:1000E00081E08DBD5A985B985C985A9A5B9A5C9AAD
:1000F00008955A985B985C9860FD5A9A61FD5B9AE6
:1001000062FD5C9A08956EBD0DB407FEFDCF8EB5FD
:100110000895FC0171836083428308951F93CF93F8
:10012000DF93EC01162F6A81888199810E94790002
:1001300060E4888199810E94830060E088819981D0
:100140000E948300612F888199810E94830067E06B
:1001500088819981DF91CF911F910C9479001F9331
:10016000CF93DF93EC01162F6A81888199810E94D9
:10017000790060E4888199810E94830061E0888130
:1001800099810E948300612F888199810E94830058
:1001900067E088819981DF91CF911F910C9479005C
:1001A0001F93CF93DF93EC01162F6A818881998189
:1001B0000E94790060E4888199810E94830062E155
:1001C000888199810E948300612F888199810E9492
:1001D000830067E088819981DF91CF911F910C9412
:1001E00079001F93CF93DF93EC01162F6A818881EA
:1001F00099810E94790060E4888199810E9483003E
:1002000063E1888199810E948300612F88819981AF
:100210000E94830067E088819981DF91CF911F91CF
:100220000C9479001F93CF93DF93EC016A8188814E
:1002300099810E94790061E4888199810E948300FC
:1002400062E1888199810E94830060E088819981C0
:100250000E948300182F67E0888199810E947900AD
:10026000812FDF91CF911F9108951F93CF93DF933B
:10027000EC016A81888199810E94790061E488811A
:1002800099810E94830063E1888199810E948300A3
:1002900060E0888199810E948300182F67E088813F
:1002A00099810E947900812FDF91CF911F9108954C
:1002B00083E091E00E94670060E080E091E00E94AE
:1002C0008E006FEF80E091E00E94AF0080E091E04F
:1002D0000E943501682F80E091E00E94D000F6CFA7
:1002E00083E091E00E94660042E063E071E080E01C
:1002F00091E00C948900EE0FFF1F0024001C0BBE40
:0C0300000790F691E02D0994F894FFCFCF
:1000A00001C01D92AA30B207E1F710E0C7E4D0E02A
:1000B00004C02197FE010E94DF01C634D107C9F7B1
:1000C0000E949E010C94E8010C9400001F920F9274
:1000D0000FB60F921124289A2FEF84E39CE0215051
:1000E00080409040E1F700C0000028982FEF84E3A3
:1000F0009CE0215080409040E1F700C00000EBCF31
:100100000895249A259A2698279A529A539A549A8F
:1001100080E58CBD81E08DBD5A985B985C985A9AB9
:100120005B9A5C9A08955A985B985C9860FD5A9A1D
:1001300061FD5B9A62FD5C9A08956EBD0DB407FE89
:10014000FDCF8EB50895FC017183608342830895CD
:100150001F93CF93DF93EC01162F6A8188819981D9
:100160000E94930060E4888199810E949D0060E074
:10017000888199810E949D00612F888199810E94C8
:100180009D0067E088819981DF91CF911F910C9448
:1001900093001F93CF93DF93EC01162F6A81888120
:1001A00099810E94930060E4888199810E949D005A
:1001B00061E0888199810E949D00612F88819981E9
:1001C0000E949D0067E088819981DF91CF911F9106
:1001D0000C9493001F93CF93DF93EC01162F6A8149
:1001E000888199810E94930060E4888199810E94AE
:1001F0009D0062E1888199810E949D00612F888124
:1002000099810E949D0067E088819981DF91CF915B
:100210001F910C9493001F93CF93DF93EC01162F43
:100220006A81888199810E94930060E48881998124
:100230000E949D0063E1888199810E949D00612F49
:10024000888199810E949D0067E088819981DF9172
:10025000CF911F910C9493001F93CF93DF93EC01E8
:100260006A81888199810E94930061E488819981E3
:100270000E949D0062E1888199810E949D0060E05A
:10028000888199810E949D00182F67E0888199815B
:100290000E949300812FDF91CF911F9108951F93AA
:1002A000CF93DF93EC016A81888199810E9493004A
:1002B00061E4888199810E949D0063E18881998130
:1002C0000E949D0060E0888199810E949D00182F06
:1002D00067E0888199810E949300812FDF91CF91FF
:1002E0001F910895FC01428308950F931F93CF93AC
:1002F000DF93EC018B016A81888199810E949300D0
:10030000B8010024660F771F001C660F771F001CC2
:10031000672F702D888199810E949D00602F660F44
:10032000660F888199810E949D0067E0888199818C
:10033000DF91CF911F910F910C949300209A2898F0
:10034000A895789489E091E00E94810060E086E0C1
:1003500091E00E94A8006FEF86E091E00E94C90042
:100360006FEF83E091E00E94C900C0E0D0E0BE01E1
:1003700080E091E00E94750182E48A95F1F700C067
:100380002196C11584E0D80781F3F1CF89E091E08F
:100390000E94800042E069E071E086E091E00E9406
:1003A000A30045E069E071E083E091E00E94A300D2
:1003B00040E069E071E080E091E00C947201EE0FA2
:1003C000FF1F0024001C0BBE0790F691E02D09943E
:0403D000F894FFCFCF
: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 mcp23s17.o
OBJECTS = main.o spi.o mcp23s17.o tlc5615.o
COMPILE = $(COMPILER_PATH) $(CFLAGS)

13
TLC5615.cpp Normal file
View file

@ -0,0 +1,13 @@
#include "TLC5615.h"
TLC5615::TLC5615(SPI& api, uint8_t adr) : spi(spi), adr(adr)
{
}
void TLC5615::setValue(uint16_t val) const
{
spi.setAdr(adr);
spi.pushByte(val >> 6);
spi.pushByte(val << 2);
spi.setAdr(SPIADR::NONE);
}

18
TLC5615.h Normal file
View file

@ -0,0 +1,18 @@
#ifndef TLC5615_H
#define TLC5615_H
#include "spi.h"
class TLC5615
{
public:
TLC5615(SPI&, uint8_t);
void setValue(uint16_t) const;
private:
SPI& spi;
const uint8_t adr;
};
#endif // TLC5615_H

View file

@ -1,19 +1,51 @@
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/wdt.h>
#include "mcp23s17.h"
#include "tlc5615.h"
#define LED B0
SPI spi;
MCP23S17 beba0(spi, SPIADR::BEBA0);
MCP23S17 sw(spi, SPIADR::SWITCH);
TLC5615 dac0(spi, SPIADR::AA0);
ISR(WDT_vect)
{
while(1)
{
dWrite(LED, HIGH);
_delay_ms(200);
dWrite(LED, LOW);
_delay_ms(200);
}
WDTCSR |= _BV(WDIE);
}
int main()
{
//WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0);
dMode(LED, OUT);
dWrite(LED, LOW);
wdt_reset();
sei();
int main() {
spi.init();
beba0.setDirA(0x00); // alle Ausgang
beba0.setDirB(0xFF); // alle Eingang
sw.setDirB(0xFF); // alle Eingang
while(1) {
beba0.writePortA(beba0.readPortB());
while(1)
{
for(uint16_t i = 0; i < 1024; i++)
{
dac0.setValue(i);
_delay_us(10);
}
}
return 0;

View file

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

3
spi.h
View file

@ -15,8 +15,11 @@
#define DMUX3 D4
enum SPIADR {
AA0 = 0,
AA1 = 1,
BEBA0 = 2,
BEBA1 = 3,
SWITCH = 5,
NONE = 7,
};