PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega8 und TLC2543 AD-Wandler



chris0983
11.03.2009, 19:28
Hallo,
ich versuche schon seit einiger Zeit erfolglos den TLC2543 AD-Wandler auszulesen. Im 8-Bit Modus funktioniert es einwandfrei. Aber im 12-Bit Modus bekomme ich nur eine 0, obwohl ich die volle Betriebspannung auf den Eingang lege.

Hier mein Quelltext:

$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 65
$swstack = 40
$framesize = 100
$baud = 4800


Config Portb.1 = Output
Config Portb.2 = Output
Config Pinb.3 = Input
Config Portb.4 = Output
Config Pinb.5 = Input
Portb.3 = 1



Cs Alias Portb.1
Clock Alias Portb.2
Ad_eingang Alias Pinb.3
Ad_ausgang Alias Portb.4
Eoc Alias Pinb.5

Dim Ausgang As Byte
Dim Eingang As Word


Cs = 1

Do

Ausgang = &B00011100
Eingang = 0

Cs = 0
Shiftout Ad_ausgang , Clock , Ausgang , 1 , 8 , 10
Cs = 1
Waitms 500
Cs = 0
Shiftin Ad_eingang , Clock , Eingang , 1 , 12 , 10
'Shift Eingang , Right , 3
Cs = 1
Print Str(eingang)
Wait 2
Loop

End

Habe beim googlen schon gelesen das mehrere Leute das Problem hatten, aber leider habe ich keine Lösung gefunden.

chris0983
11.03.2009, 21:02
Habs doch noch hingekriegt. Da der AD-Wandlder beim schreiben des Kanals usw. gleichzeitig sendet, muss man genauso viele Takte erzeugen, wie der AD-Wandler Bits sendet.

Hier der funktionierende Code:

$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 65
$swstack = 40
$framesize = 100
$baud = 4800


Config Portb.1 = Output
Config Portb.2 = Output
Config Pinb.3 = Input
Config Portb.4 = Output
Config Pinb.5 = Input
Portb.3 = 1



Cs Alias Portb.1
Clock Alias Portb.2
Ad_eingang Alias Pinb.3
Ad_ausgang Alias Portb.4
Eoc Alias Pinb.5

Dim Ausgang As Word
Dim Eingang As Word


Cs = 1

Do

Ausgang = &B0001110000011100
Eingang = 0

Cs = 0
Waitus 10
Shiftout Ad_ausgang , Clock , Ausgang , 1 , 16 , 10

Cs = 1

Waitms 100
Cs = 0
Waitus 10
Shiftin Ad_eingang , Clock , Eingang , 1 , 16 , 10
Shift Eingang , Right , 4
Cs = 1
Print Str(eingang)
Wait 2
Loop

End 'end program