adc geht
This commit is contained in:
parent
472d0135df
commit
f55fd367ee
34
B15F.hex
34
B15F.hex
|
@ -6,11 +6,11 @@
|
|||
:100050000C9464000C9464000C9464000C94640090
|
||||
:100060000C9464000C9464000C9464000C94640080
|
||||
:100070000C9464000C9464000C9464000C94640070
|
||||
:100080000C9464000C9464000C946400C601112468
|
||||
:100080000C9464000C9464000C946400E801112446
|
||||
:100090001FBECFEFD0E4DEBFCDBF21E0A0E0B1E0D6
|
||||
:1000A00001C01D92AA30B207E1F710E0C7E4D0E02A
|
||||
:1000B00004C02197FE010E94DF01C634D107C9F7B1
|
||||
:1000C0000E949E010C94E8010C9400001F920F9274
|
||||
:1000A00001C01D92AB30B207E1F710E0C7E4D0E029
|
||||
:1000B00004C02197FE010E940102C634D107C9F78E
|
||||
:1000C0000E94BE010C940A020C9400001F920F9231
|
||||
:1000D0000FB60F921124289A2FEF84E39CE0215051
|
||||
:1000E00080409040E1F700C0000028982FEF84E3A3
|
||||
:1000F0009CE0215080409040E1F700C00000EBCF31
|
||||
|
@ -49,15 +49,19 @@
|
|||
:10030000B8010024660F771F001C660F771F001CC2
|
||||
:10031000672F702D888199810E949D00602F660F44
|
||||
:10032000660F888199810E949D0067E0888199818C
|
||||
:10033000DF91CF911F910F910C949300209A2898F0
|
||||
:10034000A895789489E091E00E94810060E086E0C1
|
||||
:1003500091E00E94A8006FEF86E091E00E94C90042
|
||||
:100360006FEF83E091E00E94C900C0E0D0E0BE01E1
|
||||
:1003700080E091E00E94750182E48A95F1F700C067
|
||||
:100380002196C11584E0D80781F3F1CF89E091E08F
|
||||
:100390000E94800042E069E071E086E091E00E9406
|
||||
:1003A000A30045E069E071E083E091E00E94A300D2
|
||||
:1003B00040E069E071E080E091E00C947201EE0FA2
|
||||
:1003C000FF1F0024001C0BBE0790F691E02D09943E
|
||||
:0403D000F894FFCFCF
|
||||
:10033000DF91CF911F910F910C94930010927C004C
|
||||
:1003400087E880937A00089580917C00807E682BF6
|
||||
:1003500060937C0080917A00806480937A0083EAC5
|
||||
:1003600091E00197F1F700C0000080917A0086FDCE
|
||||
:10037000FCCF8091780090917900089581E6809378
|
||||
:100380006000209A2898A89578948AE091E00E94CD
|
||||
:10039000810060E087E091E00E94A8006FEF87E0B5
|
||||
:1003A00091E00E94C9006FEF84E091E00E94C900D3
|
||||
:1003B00080E091E00E949E0166E080E091E00E9472
|
||||
:1003C000A401BC0181E091E00E947501A895F4CFE1
|
||||
:1003D0008AE091E00E94800042E06AE071E087E0FC
|
||||
:1003E00091E00E94A30045E06AE071E084E091E0C2
|
||||
:1003F0000E94A30040E06AE071E081E091E00C948B
|
||||
:100400007201EE0FFF1F0024001C0BBE0790F69137
|
||||
:08041000E02D0994F894FFCFE0
|
||||
: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 mcp23s17.o tlc5615.o
|
||||
OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o
|
||||
|
||||
|
||||
COMPILE = $(COMPILER_PATH) $(CFLAGS)
|
||||
|
|
28
adu.cpp
Normal file
28
adu.cpp
Normal file
|
@ -0,0 +1,28 @@
|
|||
#include "adu.h"
|
||||
|
||||
void ADU::init()
|
||||
{
|
||||
// externe Referenz an AREF
|
||||
ADMUX = 0;
|
||||
|
||||
// ADC aktiviert, prescaler = 128
|
||||
ADCSRA = _BV(ADEN) | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0);
|
||||
}
|
||||
|
||||
uint16_t ADU::getValue(uint8_t channel)
|
||||
{
|
||||
// lege Kanal fest
|
||||
ADMUX = (ADMUX & 0xE0) | channel;
|
||||
|
||||
// starte Konvertierung
|
||||
ADCSRA |= _BV(ADSC);
|
||||
|
||||
// warte Konvertierungszeit ab
|
||||
_delay_us(13 * 1000000 * 128 / F_CPU + 1);
|
||||
|
||||
// warte auf Ende
|
||||
while(ADCSRA & _BV(ADSC));
|
||||
|
||||
// liefere Ergebnis
|
||||
return ADCW;
|
||||
}
|
15
adu.h
Normal file
15
adu.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
#ifndef ADC_H
|
||||
#define ADC_H
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdint.h>
|
||||
|
||||
class ADU
|
||||
{
|
||||
public:
|
||||
void init(void);
|
||||
uint16_t getValue(uint8_t);
|
||||
};
|
||||
|
||||
#endif // ADC_H
|
13
main.cpp
13
main.cpp
|
@ -4,6 +4,7 @@
|
|||
#include <avr/wdt.h>
|
||||
#include "mcp23s17.h"
|
||||
#include "tlc5615.h"
|
||||
#include "adu.h"
|
||||
|
||||
#define LED B0
|
||||
|
||||
|
@ -12,6 +13,7 @@ SPI spi;
|
|||
MCP23S17 beba0(spi, SPIADR::BEBA0);
|
||||
MCP23S17 sw(spi, SPIADR::SWITCH);
|
||||
TLC5615 dac0(spi, SPIADR::AA0);
|
||||
ADU adu;
|
||||
|
||||
ISR(WDT_vect)
|
||||
{
|
||||
|
@ -27,7 +29,7 @@ ISR(WDT_vect)
|
|||
|
||||
int main()
|
||||
{
|
||||
//WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0);
|
||||
WDTCSR = _BV(WDIE) | _BV(WDP3) | _BV(WDP0);
|
||||
dMode(LED, OUT);
|
||||
dWrite(LED, LOW);
|
||||
wdt_reset();
|
||||
|
@ -38,14 +40,13 @@ int main()
|
|||
beba0.setDirA(0x00); // alle Ausgang
|
||||
beba0.setDirB(0xFF); // alle Eingang
|
||||
sw.setDirB(0xFF); // alle Eingang
|
||||
|
||||
adu.init();
|
||||
|
||||
while(1)
|
||||
{
|
||||
for(uint16_t i = 0; i < 1024; i++)
|
||||
{
|
||||
dac0.setValue(i);
|
||||
_delay_us(10);
|
||||
}
|
||||
dac0.setValue(adu.getValue(6));
|
||||
wdt_reset();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue