Hallo,
ich habe ein Problem: Mein Ziel ist es, digitale Signal vom Arduino in ein analoges Signal durch meinen DAC umzuwandeln. Jedoch erscheint bei mir am Ausgang nicht das gewünschte Signal. Wenn ich beispielsweise eine Sinussignal vom Funktionsgenerator einspeise, erscheint am Ausgang eine ''Treppenfunktion'. Beim Rechtecksignal hingegen, erscheint auch am Ausgang ein Rechtecksignal.
Ich benutze einen ArduinoMega2560. Als Eingang verwende ich den Pin A0.
Als DAC wird der AD557 verwendet. Dabei ist wichtig zu beachten, dass die Pins 1-8 vom DAC mit dem PortL(42-49) verbunden sind. Das CS hat den Pin 9 und das CE hat den Pin 10. CS ist mit dem Pin 40 des Arduino verbunden und CE mit den Pin 41.
Bitte um Hilfe, bin schon am verzweifeln!
Hier ist der Programmcode:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <LiquidCrystal.h>
#include <stdio.h>
#include "AODEF.h"
volatile static int i = 0;
volatile static uint8_t feld1[4999];
volatile static uint8_t j;
char x[100];
// LCD Setup: rs e d4 d5 d6 d7 - Digital Pinnummern Arduino
// rw auf GND
LiquidCrystal lcd(12, 10, 5, 4, 3, 2);
void setup()
{
cli();
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,1);
//
/////////////////////////////DAC/////////////////////////////
pinMode(40,OUTPUT);
pinMode(41,OUTPUT);
digitalWrite(40, LOW);
digitalWrite(41, LOW);
DDRL =0xFF; //OUTPUT
///////////////////////ADC///////////////// //
pinMode(A0,INPUT);
ADCSRA=0;
ADMUX=0;
ADCSRB=0; // ADTS auf Null free running mit ADate
ADMUX = B01100000;
ADCSRA = B11101110;
sei(); // Enable Global Interrupts
i=0;
}
ISR(ADC_vect)
{
j=ADCH;
feld1[i]=j;
lcd.setCursor(0,1);
utoa (j, x, 10); //itoa (ADCH, x, 10);
lcd.print(x);
lcd.print(" ");
digitalWrite(40, LOW);
PORTL = j; //Ausgabe Wert
digitalWrite(40, HIGH);
i++;
if(i>4998)
{
i=0;
}
}
void loop() {
}