Seriellen Stream abtasten/Erklärung von ShiftIn

Echo

Neues Mitglied
13. Apr. 2009
33
0
0
Sprachen
Moin,

ich würde gerne einen an meinen ATMega2560 extern angeschlossenen ADC auslesen. Zum Programmieren wird BASCOM verwendet. Der ADC: LTC2440 in der 2-Wire-Beschaltung, mit externem Takt (momentan per Frequenzgenerator) und ständig auf Low. Der ADC sendet daher ständig sein Datentelegramm von 32-Bit-Länge. BUSY ist solange High bis die Konvertierung abgeschlossen, wenn BUSY Low geht startet auch das Telegramm.

Datenblatt des ADCs:

http://www.alldatasheet.com/datasheet-pdf/pdf/168732/LINER/LTC2440.html

So, jetzt zu meinem Problem.

Ich versuche momentan das Telegramm richtig einzulesen. Mit dem Befehl ShiftIn (den ich noch nicht ganz durchschaut habe) klappt es aber noch nicht ganz. Daher habe ich versucht selber ein Programm zu schreiben welches durch BUSY getriggert wird und die Bits einzeln einliest, wobei jedes in ner Variable gespeichert wird (Bits werden in der mitte abgetastet, bei einer Taktfrequenz Clk von 1kHz). Das hat den Vorteil das ich jedes überprüfen kann, aber den Nachteil des sehr großen Codes.

Selbstgefrickelter Code: http://pastebin.ca/1432121

ShiftIn liest die ganze Chose entweder nicht richtig ein, es kommen dann nur falsche ergebnisse oder es sendet die ganze Zeit Nullen an meinen Terminal Emulator.

Mein Problem besteht wirklich nur in der Abtastung, der ADC läuft einwandfrei (Datentelegramm is im Oszi sichtbar und veränderbar durch ändern der Temp am PT1000). Der ADC dient hier als Digitalisierer für meinen PT1000, das ganze Geraffel wird also ein hochgenaues Thermometer für messungen an Peltierelementen.

Mit freundlichen Grüßen,

Echo
 
Da es bei pastebin in einem Monat abläuft, hier mal der Code ...

Hallo,

da das bei pastebin nur max nen Monat drin bleibt ...

"Please note that information posted here will expire by default in one month."

... setz ich den Code mal hier ins Board. Dann hat man ihn etwas länger für
die Problemfindung zur Verfügung.

Miscellany Saturday, May 23rd, 2009 at 10:56:19am


CodeBox BASCOM

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Portd.1 = Input
Config Portd.3 = Input
Config Portd.5 = Input
Config Portd.7 = Input

Busy Alias Pind.1
Sck Alias Pind.3
Cs Alias Pind.5
Sdo Alias Pind.7

Dim Eoc_bit As Byte
Dim Dummy_bit As Byte
Dim Sig_bit As Byte
Dim Msb_bit As Long
Dim 23_bit As Long
Dim 22_bit As Long
Dim 21_bit As Long
Dim 20_bit As Long
Dim 19_bit As Long
Dim 18_bit As Long
Dim 17_bit As Long
Dim 16_bit As Long
Dim 15_bit As Long
Dim 14_bit As Long
Dim 13_bit As Long
Dim 12_bit As Long
Dim 11_bit As Long
Dim 10_bit As Long
Dim 09_bit As Long
Dim 08_bit As Long
Dim 07_bit As Long
Dim 06_bit As Long
Dim 05_bit As Long
Dim 04_bit As Long
Dim 03_bit As Long
Dim 02_bit As Long
Dim Lsb_bit As Long

'-------------------------------------------------------------------------------

Do

If Busy = 0 Then

Waitus 5000

Eoc_bit = Sdo
Waitus 10000
Dummy_bit = Sdo
Waitus 10000
Sig_bit = Sdo
Waitus 10000
Msb_bit = Sdo
Waitus 10000
23_bit = Sdo
Waitus 10000
22_bit = Sdo
Waitus 10000
21_bit = Sdo
Waitus 10000
20_bit = Sdo
Waitus 10000
19_bit = Sdo
Waitus 10000
18_bit = Sdo
Waitus 10000
17_bit = Sdo
Waitus 10000
16_bit = Sdo
Waitus 10000
15_bit = Sdo
Waitus 10000
14_bit = Sdo
Waitus 10000
13_bit = Sdo
Waitus 10000
12_bit = Sdo
Waitus 10000
11_bit = Sdo
Waitus 10000
10_bit = Sdo
Waitus 10000
09_bit = Sdo
Waitus 10000
08_bit = Sdo
Waitus 10000
07_bit = Sdo
Waitus 10000
06_bit = Sdo
Waitus 10000
05_bit = Sdo
Waitus 10000
04_bit = Sdo
Waitus 10000
03_bit = Sdo
Waitus 10000
02_bit = Sdo
Waitus 10000
Lsb_bit = Sdo
End If

'-------------------------------------------------------------------------------
Dim Lsb_byte As Long
Dim Mittleres_byte As Long
Dim Msb_byte As Long
Dim Adwert As Long

Lsb_bit = Lsb_bit
02_bit = 02_bit * 2
03_bit = 03_bit * 4
04_bit = 04_bit * 8
05_bit = 05_bit * 16
06_bit = 06_bit * 32
07_bit = 07_bit * 64
08_bit = 08_bit * 128

09_bit = 09_bit * 256
10_bit = 10_bit * 512
11_bit = 11_bit * 1024
12_bit = 12_bit * 2048
13_bit = 13_bit * 4096
14_bit = 14_bit * 8192
15_bit = 15_bit * 16384
16_bit = 16_bit * 32768

17_bit = 17_bit * 65536
18_bit = 18_bit * 131072
19_bit = 19_bit * 262144
20_bit = 20_bit * 524288
21_bit = 21_bit * 1048576
22_bit = 22_bit * 2097152
23_bit = 23_bit * 4194304
Msb_bit = Msb_bit * 8388608

Lsb_byte = Lsb_bit + 02_bit
Lsb_byte = Lsb_byte + 03_bit
Lsb_byte = Lsb_byte + 04_bit
Lsb_byte = Lsb_byte + 05_bit
Lsb_byte = Lsb_byte + 06_bit
Lsb_byte = Lsb_byte + 07_bit
Lsb_byte = Lsb_byte + 08_bit

Mittleres_byte = 09_bit + 10_bit
Mittleres_byte = Mittleres_byte + 11_bit
Mittleres_byte = Mittleres_byte + 12_bit
Mittleres_byte = Mittleres_byte + 13_bit
Mittleres_byte = Mittleres_byte + 14_bit
Mittleres_byte = Mittleres_byte + 15_bit
Mittleres_byte = Mittleres_byte + 16_bit

Msb_byte = 17_bit + 18_bit
Msb_byte = Msb_byte + 19_bit
Msb_byte = Msb_byte + 20_bit
Msb_byte = Msb_byte + 21_bit
Msb_byte = Msb_byte + 22_bit
Msb_byte = Msb_byte + 23_bit
Msb_byte = Msb_byte + Msb_bit

Adwert = Lsb_byte + Mittleres_byte
Adwert = Adwert + Msb_byte


Print " "
Print Adwert
Print " "

Loop

End


update paste below


CodeBox BASCOM

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Portd.1 = Input
Config Portd.3 = Input
Config Portd.5 = Input
Config Portd.7 = Input

Busy Alias Pind.1
Sck Alias Pind.3
Cs Alias Pind.5
Sdo Alias Pind.7

Dim Eoc_bit As Byte
Dim Dummy_bit As Byte
Dim Sig_bit As Byte
Dim Msb_bit As Long
Dim 23_bit As Long
Dim 22_bit As Long
Dim 21_bit As Long
Dim 20_bit As Long
Dim 19_bit As Long
Dim 18_bit As Long
Dim 17_bit As Long
Dim 16_bit As Long
Dim 15_bit As Long
Dim 14_bit As Long
Dim 13_bit As Long
Dim 12_bit As Long
Dim 11_bit As Long
Dim 10_bit As Long
Dim 09_bit As Long
Dim 08_bit As Long
Dim 07_bit As Long
Dim 06_bit As Long
Dim 05_bit As Long
Dim 04_bit As Long
Dim 03_bit As Long
Dim 02_bit As Long
Dim Lsb_bit As Long

'-------------------------------------------------------------------------------

Do

If Busy = 0 Then

Waitus 5000

Eoc_bit = Sdo
Waitus 10000
Dummy_bit = Sdo
Waitus 10000
Sig_bit = Sdo
Waitus 10000
Msb_bit = Sdo
Waitus 10000
23_bit = Sdo
Waitus 10000
22_bit = Sdo
Waitus 10000
21_bit = Sdo
Waitus 10000
20_bit = Sdo
Waitus 10000
19_bit = Sdo
Waitus 10000
18_bit = Sdo
Waitus 10000
17_bit = Sdo
Waitus 10000
16_bit = Sdo
Waitus 10000
15_bit = Sdo
Waitus 10000
14_bit = Sdo
Waitus 10000
13_bit = Sdo
Waitus 10000
12_bit = Sdo
Waitus 10000
11_bit = Sdo
Waitus 10000
10_bit = Sdo
Waitus 10000
09_bit = Sdo
Waitus 10000
08_bit = Sdo
Waitus 10000
07_bit = Sdo
Waitus 10000
06_bit = Sdo
Waitus 10000
05_bit = Sdo
Waitus 10000
04_bit = Sdo
Waitus 10000
03_bit = Sdo
Waitus 10000
02_bit = Sdo
Waitus 10000
Lsb_bit = Sdo
End If

'-------------------------------------------------------------------------------
Dim Lsb_byte As Long
Dim Mittleres_byte As Long
Dim Msb_byte As Long
Dim Adwert As Long

Lsb_bit = Lsb_bit
02_bit = 02_bit * 2
03_bit = 03_bit * 4
04_bit = 04_bit * 8
05_bit = 05_bit * 16
06_bit = 06_bit * 32
07_bit = 07_bit * 64
08_bit = 08_bit * 128

09_bit = 09_bit * 256
10_bit = 10_bit * 512
11_bit = 11_bit * 1024
12_bit = 12_bit * 2048
13_bit = 13_bit * 4096
14_bit = 14_bit * 8192
15_bit = 15_bit * 16384
16_bit = 16_bit * 32768

17_bit = 17_bit * 65536
18_bit = 18_bit * 131072
19_bit = 19_bit * 262144
20_bit = 20_bit * 524288
21_bit = 21_bit * 1048576
22_bit = 22_bit * 2097152
23_bit = 23_bit * 4194304
Msb_bit = Msb_bit * 8388608

Lsb_byte = Lsb_bit + 02_bit
Lsb_byte = Lsb_byte + 03_bit
Lsb_byte = Lsb_byte + 04_bit
Lsb_byte = Lsb_byte + 05_bit
Lsb_byte = Lsb_byte + 06_bit
Lsb_byte = Lsb_byte + 07_bit
Lsb_byte = Lsb_byte + 08_bit

Mittleres_byte = 09_bit + 10_bit
Mittleres_byte = Mittleres_byte + 11_bit
Mittleres_byte = Mittleres_byte + 12_bit
Mittleres_byte = Mittleres_byte + 13_bit
Mittleres_byte = Mittleres_byte + 14_bit
Mittleres_byte = Mittleres_byte + 15_bit
Mittleres_byte = Mittleres_byte + 16_bit

Msb_byte = 17_bit + 18_bit
Msb_byte = Msb_byte + 19_bit
Msb_byte = Msb_byte + 20_bit
Msb_byte = Msb_byte + 21_bit
Msb_byte = Msb_byte + 22_bit
Msb_byte = Msb_byte + 23_bit
Msb_byte = Msb_byte + Msb_bit

Adwert = Lsb_byte + Mittleres_byte
Adwert = Adwert + Msb_byte


Print " "
Print Adwert
Print " "

Loop

End


dadurch steht hier nicht auf einmal ein Thread drin, bei dem kein Programmcode
mehr vorhanden ist und der dadurch niemandem mehr wirklich weiterhilft.
(also unnütz geworden ist) :D

Geht entweder mit dem "Code-Icon" im Editor oder so wie ich es gemacht
habe mit highlight=BASCOM und /highlight .
Natürlich in eckigen Klammern (also diese ... [ ] )

Gruß
Dino
 
Nun aber zu deinem Problem ... :)

ich hab hier zwar auch einen ADC von dem Hersteller rumfliegen (LTC1594)
aber der hat 12Bit, 4Kanäle und die Ansteuerung ist anscheinend auch etwas
anders. Zwar auch seriell aber man schubst bei dem die Wandlung selber an.
Aber er fliegt hier eben im Moment noch rum (ohne Strom in der Packung).

Mit Bascom hab ich leider auch nicht genug Erfahrung um dir da weiter zu helfen.
Ich arbeite im Moment noch mehr mit Assembler. :(

Aber das sollte in diesem Forum wohl kein größeres Problem sein. Es gibt genug
Bascom-Leute hier ... ;) :)

Gruß
Dino
 
Moin,

läuft mittlerweile alles :D
Hab aber jetzt Shiftin statt meinem eigenen Code genutzt, spart ne menge Zyklenzeit. Das einzige was mir die meisten Sorgen bereitet bei BASCOM ist eigentlich nur die unvollständige/veraltete Doku. Hab mich eben auch ne halbe stunde damit abgeplagt nur Shift zum laufen zu kriegen (zum Bits rauskloppen) und am ende lags nur an der Verwendung von Single statt Long als Variable. Naja bin froh dasses mittlerweile gut löppt^^.

MfG echo
 
Hallo echo,

zunächst einmal herzlichen Glückwunsch zur selbst erarbeiteten Lösung. Ich bin leider zur zeit ziemlich Offline und aus diesem grund schaue ich nur spontan hier im Forum vorbei. Mit Casio und Dino gibt es aber noch super Leute die schnell und fundiert weiterhelfen ....

So, nun habe ich aber vielleicht auch noch etwas für Dich. Wenn Du mit BASCOm programmierst dann kennst Du sicher das fast 20 MByte große Manual welches von der MCS-Electronics-Seite geladen werden kann und welches neben der Hilfe noch weitere Details und vollständige Code-Beispiele enthält. Dies gibt es zu jeder Version die offiziell released wurde und ich bin der Meinung, dass dort schon das meiste aktuell beschrieben ist. Wenn ich in der Hilfe selbst nicht weiterkomme schaue ich im Reference-Manual nach oder im Forum von MCS selbst.

Dann habe ich noch eine Frage zum LTC2440 selbst. Du schreibst, Du würdest ihn im 2-Wire-Modus betreiben. Wenn ich den Chip richtig im Kopf habe dann hat dieser aber ein 3-Wire / 4-Wire interface. Wie sieht Deine Beschaltung im Detail aus? Verwendest Du nur SDO und SCK? Was machst Du mit CS und wie behandelst Du BUSY? Wie hast Du den SDI beschaltet?

Danke und Grüße,
Markus
 
Moin,

joa den LTC2440 kann man im 4-/3-/ oder 2-Wire-Mode betreiben. Dazu hat man ja BUSY, CS, SDO und SCK. Ich betreibe ihn im 2-Wire-Mode, also Chip Select dauerhaft auf low. Dann gebe ich ihm extern einen Takt vor der an SCK angeschlossen wird, die datentelegramme spuckt er mir dann mit der per SDI vorgegebenen Outputfrequenz aus (natürlich nur wenn SCK entsprechend schnell ist, ansonsten wartet er jedesmal bis alle Daten rausgegeben wurden bis er ne neue Konvertierung startet). In meinem Programm beobachte ich BUSY und warte bis BUSY auf low geht (also daten freigegeben werden vom ADC) dann starte ich ShiftIn um mir die daten abzuholen, funktioniert bisher tadellos. Die bits die ich nicht brauche (5-sub-LSBs und 1 Signalbit) schmeiße ich per Shift aus der Variable. Hab den Formelcode (4. Polynom für tiefe temps und 1. Polynom für raumtemps) zur berechnung der Temp aus dem AD-Wert auch schon implementiert sodass er mir momentan schon temperaturen mit einer stabilen auflösung von 10-millikelvin per UART ausgibt (ein wunder bei dem versuchsaufbau xD). Ich werde die ganze Angelegenheit wahrscheinlich noch weiterentwickeln, dann erzeugt der µC seinen SCK-takt selbst und ein besseres Layout für den ADC entwickeln damit ich auch auf stabile Millikelvinwerte komme.

MfG Echo

Edit: Das 20-MB Manual habsch da bisher noch nicht gesehn auf MCS-seite. WO finde ich das dort? Momentan habsch das Buch "Programmieren mit BASCOM-AVR" als grundlage, sowie die Bascom-interne Hilfe, die samples und das internet. Nach dem ADC will ich dann auch versuchen eine Uhr auf meinem GLCD einzubauen, das dann per DCF und RTC.^^
 
Moin,

bin grade dabei mir ein µC-Stack aufzubauen. Also mehrere Laborkarten übereinander: Netzteil 5V und 12V, für 2 Laborkarten a ATMega2560 mit jeweils 10 10-pol-Wannensteckern zur Bereitstellung von maximal (beide karten zusammen) 160 I/Os. Darauf kommt ein neuer ADC, diesmal statt 1-Kanal mit 24 Bit kommt ein 16-Kanal 24-Bit-ADC vom selben Hersteller, soll heißen dasselbe Datenprotokoll nur ein zusätzliches Protokoll an SDI zum einstellen der momentanen Eingangsadresse.

Wenn interesse besteht könnte ich ja mal Schaltpläne posten oder Infos geben. ;)

MfG Echo
 
Die Kamera hat leider vor ein paar Tagen den Geist aufgegeben, also momentan erstmal nur Textinfos:

Wie gesagt: 2 ATMega2560 an jeweils 10 Stück Wannenstecker 10-polig nach Roboternetz-Standard ( 1 Port + Versorgungsspannung). Peripherie wäre dann jeweils 1 MAX232 für RS232-Ausgabe an PC incl. seriellem Programmer (Ponyprog is scho toll^^). Überleg grad: MAX232 hat ja 4 Pegelwandler, 2 für Rx und 2 für Tx, das dürfte ja für Ausgabe und ISP reichen wa?

Der ADC: LTC2498 hat 16-Channel bei 24-Bit, gesteuert über SPI im 3-Wire-Mode (wie üblich^^), als Referenz dient mir ein LT1461 (seehr genau im gegensatz zu den haushaltsüblichen referenzen). Hatte vorher nen REF102 mit Spannungsteilerbeschaltung dafür genutzt aber der LTC2440 war ref-eingangsmäßig doch so niederohmig das er die Ref-spannung um einige 10 mV runtergezogen hat. Der neue LT hat aber genug Power dafür. :D

Zu beachten is beim LTC2498: QFN-Package, soll heißen scheißeklein. Hab ihn mir auf Lochraster adaptiert mit 0,1mm CuL, dauert recht lange. Mit Weller-Lötspitze kann man ihn leider nicht manuell normal auf Platinen löten, die spitze ist auch in bleistiftspitz-ausfürung vorne zu breit dafür...

Der ADC dient mir dann als komfortable Möglichkeit mehrere analoge Spannungen hochgenau zu erfassen, das eignet sich z.B. für MPP-Tracker-messungen ( 4 Spannungen entsprechen: Uin, Iin, Uout, Iout, Strom gemessen über Shunts) und Messreihenerfassung von Sensoren. Ich spiele immer noch mit dem gedanken RGB-LEDs als Farbsensoren einzusetzen wenn die LED-Chips denn unterschiedliche charakteristika besitzen....

Iwann kriegt der µC-Stack dann auch noch ne RTC mit DCF77, das hat aber noch zeit.

MfG Echo

Wenn noch fragen sind: Immer her damit :D
 
Hallo,

Ich spiele immer noch mit dem gedanken RGB-LEDs als Farbsensoren einzusetzen
ich weiß das man LEDs auch als Photosensoren verwenden kann. Auch als
Referenzspannungsquellen.

Aber was hälst Du von CCD-Zeilen von Scannern ? Die gibts bei Pollin sehr
günstig. Wär das ne Idee als Farbsensor ? Ohne das Linsengeraffel davor sind
die auch nicht alzu groß.

Gruß
Dino
 
LEDs als referenzspannungsquellen...hmm so ähnlich wie ein transistor als poor-mans-Z-diode wa xD

ma guckn, ging eigentlich eher um die theorie ob man rgb-leds überhaupt so einsetzen könnte.
 
Hi,

LEDs als referenzspannungsquellen...hmm so ähnlich wie ein transistor als poor-mans-Z-diode wa xD
nix poor-man :) LEDs sind rauschärmer als Z-Dioden. Darum findet man die auch
in Verstärker-Schaltungen als Referenzspannungsquellen/Stabis :D
Außerdem schlägt man da 2 Fliegen mit einer Klappe. Man hat neben der
1,85V Referenz auch gleich ne Betriebsspannungsanzeige :D ;)

Gruß
Dino
 
Najaaa, aber wenn schon 24-bit dann doch bitte keine stark schwankende spannung von ner LED, lieber ne 3ppm Ref-quelle^^
 
Hallo,

Najaaa, aber wenn schon 24-bit dann doch bitte keine stark schwankende spannung von ner LED, lieber ne 3ppm Ref-quelle^^
OK , überzeugt ;)

In ner alten elrad (glaube ich) hab ich mal ne Bauanleitung für ne
Temperatur stabilisierte Referenzspannungsquelle gesehen.
Die ganze Referenzspannungsquelle war in nem Blechgehäuse gedämmt
eingebaut und mit nem Transistor als Heizquelle und nem anderen als
Sensor auf einer konstanten Temperatur gehalten :D

Gruß
Dino
 
Moin,

der ADC funzt mit seiner Peripherie wunderbar :D

Hatte schon die Befürchtung durch die kurze Lötzeit jedes Pads am QFN könnten eventuell kalte Lötstellen entstehen oder so. Aber der neue ADC is noch besser als der Alte, langsamere interne SCK (ca 30KHz, wunderbar für den ADC). Die SCK des alten lief im MHz-bereich also nicht verwendbar gewesen. Is aber nur nen momentaner test zur allgemeinen Funktion, d.h. ich muss noch alle kanäle auf Funktion checken, sowie ein programm zur Adressvergabe schreiben. Aber erstma bin ich begeistert das das kleine Ding beim ersten mal schon funzt, beim alten ADC habsch mich ja abgeplagt den zum laufen zu kriegen.

MfG Echo

Edit: Achja, hab mich noch entschieden auf die recht leere Netzteilplatine meinen Buck-Konverter zu bauen, der hat damals ziemlich gut als MPP-Tracker funktioniert. Allerdings hatte ich von BASCOM noch nich so die ahnung um den ordentlich zum laufen zu bringen, aber jetzt müsste ich den ordentlich zum laufen kriegen^^.
 
Soooo, hier ma n paar Bilder des Stacks:

http://img1.abload.de/img/img_8423o4ik.jpg der 16-Kanal, 24-bit-ADC im QFN-Package incl. der Ref und eines OPs als Impedanzwandler zwischen ADC-internem MUX und der Wandlereinheit

http://img1.abload.de/img/img_8437s7hx.jpg Netzteil des Stacks, 5V und 12V, daneben noch ein kleiner Buck-Konverter

http://img4.abload.de/img/img_84512ldj.jpg Vollständiger Stack: netzteil, 2* µC-karte, eine adapter wannnenstecker-> pfostenstecker-karte, eine analogkarte für analog only, eine halbbrückenkarte

http://img4.abload.de/img/img_8446axhc.jpg noch ein Bild

Momentan funzt der ADC wunderbar mit dem PT1000, noch ohne Ansteuerung per µC da ich auf die TQFP-Adapterplatinen warten muss, aber kein Problem da der ADC darauf programmiert is nach nem PowerUp direkt Kanal 0 abzufragen wenn keine Adressbestimmung gegeben is, daher funzt es auch ohne µC für diesen Kanal :D , ich liebe das Ding
 
Moin,

bin grade am Programmieren des µC zur Abfrage des neuen ADCs (LTC2498). Nun ergibt sich aber das Problem das dieser ADC keinen BUSY-Ausgang hat den ich einfach per Input abfragen könnte um damit meinen Shiftin auszulösen. Ich habe nur CS zum steuern oder ich frage SCK oder SDO ab, ob sich da was ändert.

Meine momentane (nicht funzende) Software findet sich im Anhang. Ich benutze dafür einen Timer1 als Interrupt-Quelle um CS zu toggeln im paar hundert ms-Bereich, damit der ADC ausreichend zeit ne Konversion durchzuführen (ca 150ms dauert das). Wenn dann CS auf Low geht schmeißt er auch sofort darauf die daten raus, habsch schon mitm Oszi gecheckt. Bei benutzung der Software gibts immer den gleichen Wert am Terminal-Emulator (Ausgabe: Richtiger Wert und Binär). Natürlich dürfte das nicht sein da bei 24bit eh immer paar bits wackeln.

Ich könnte natürlich auch auf SCK oder SDO gucken (SCK toggelt mit 38KHz während die daten rausgegeben werden, sonst ist es Low, dabei ist CS dauerhaft Low damit der ADC selbstständig Daten rausschmeißt).
Allerdings hab ich Programmiertechnisch nich genug drauf um das hinzukriegen. :eek:

Dachte daran per Interrupt auf ne steigende Flanke an SCK zu achten, allerdings könnte er dann auch mitten im SCK-Zyklus anfangen mit shiftin.

MfG Echo
 

Anhänge

  • Test des ADCs.bas
    1.006 Bytes · Aufrufe: 11

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)