LTC1257

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Der LTC1257 ist ein 12 Bit DA-Wandler mit serieller Ansteuerung.

Beispielprogramm

Ich möchte hier mal ein kleines Beispiel zur Verwendung der LTC1257-C-Routinen beisteuern. Das Programm erzeugt mit Hilfe des LTC1257 einen Sägezahn über dessen gesamten Ausgangsspannungsbereich in 4096 Schritten (= 12bit). Der LTC1257 wird dabei mit der maximal möglichen Geschwindigkeit angesteuert. Verwendet wird ein ATMega8 und ein LTC1257, der an den Pins PC3, PC4 und PC5 des ATMega8 angeschlossen ist.

  • Hardware Konfiguration in der ltc1257.h:
/*
 * Port, where LTC1257 is connected to:
 * PORTC/PINC
 */

#define DACOUT		PORTC
#define DACIN		PINC

/*
 * Port configuration:
 *
 * Port pin	LTC1257
 * --------------------
 * PC3		LOAD
 * PC4		DATA
 * PC5		CLK
 *
 */

#define DACCLK(LEVEL)	DACOUT = (LEVEL) ? (DACIN & ~_BV(PC5)):(DACIN | _BV(PC5))
#define DACDATA(LEVEL)	DACOUT = (LEVEL) ? (DACIN & ~_BV(PC4)):(DACIN | _BV(PC4))
#define DACLOAD(LEVEL)	DACOUT = (LEVEL) ? (DACIN & ~_BV(PC3)):(DACIN | _BV(PC3))

#define LATCHTIMING	0x01				/* spend some time to the latch	*/
  • Hauptprogramm:
#include <avr/io.h>

#include "ltc1257.h"

/* Prototypes: */
int main(void);
inline void ioinit(void);

int
main(void)
{
	unsigned int sawtooth = 0;
	
	ioinit();
	
	while(1)
	{
		/* Sawtooth-function: */
		if (sawtooth++ == 4095)
			sawtooth = 0;
		
		/* Write actual value to DAC: */
		ltc1257_ll_write(sawtooth);
	}
	
	/* NEVEREACHED */
	return 0;
}

inline void
ioinit(void)
{
	/* IO setup: */
	DDRC = (1 << PC3) | (1 << PC4) | (1 << PC5);	/* LTC1257 pins (output) */
	
	/* Low-level init of DAC: */
	ltc1257_ll_init();
}

Das gesamte Beispiel gibts zum Download!

Weblinks