#!/usr/bin/python import RPi.GPIO as GPIO import sys import time FSYNC = 21 SCLK = 23 SDAT = 19 def SetPin(pinNumber,value): GPIO.output(pinNumber,value) return def InitIO(): GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(FSYNC,GPIO.OUT) GPIO.setup(SCLK,GPIO.OUT) GPIO.setup(SDAT,GPIO.OUT) SetPin(FSYNC,1) SetPin(SCLK,1) time.sleep(0.001) return def PulseClock(): #CLOCK time.sleep(0.001) #Mini Delay SetPin(SCLK,0) #AD schaltet auf fallende Flanke time.sleep(0.001) #Mini Delay SetPin(SCLK,1) # return def Shift (data): SetPin(FSYNC,0); #FSYNC auf 0 setzen um zu zeigen das ein Wort gesendet wird for b in range(16): #Wortlaenge 16 Bit value = data & 0x8000 #Linkes Bit zuerst senden SetPin(SDAT,value) # data <<= 1 #Links shiften data &= 0xFFFF #Limit setzen maximal 16 Bits PulseClock() #Clock SetPin(FSYNC,1) #FSYNC wieder auf 1 return # Main Program InitIO() Shift16(0x2100) #1 Reset einschalten 0010 0001 0000 0000 Shift16(0x4A7C) #2 LSB 01-- ---- ---- ---- Shift16(0x4000) #3 MSB 01-- ---- ---- ---- Shift16(0x2000) #5 Reset Off aktiviert die Uebertragung 0010 0000 0000 0000 # ENDE