Hallo! Ich versuche hier sowas wie einen Osciloskop zu bauen. Soweit klappt alles, nur bislang habe ich als AD-Wandler den internen AD-Wandler des ATMega8 verwendet. Bei mir kommt er nur auf lächerliche 2ksps. Laut dem Datenblatt können es eh höstens 15ksps sein, das ist viel zu langsam. Ich möchte aber eine Abtastrate von 1MHz haben, so das sich Signale bis 100-200kHz gut darstellen lassen und ein ATMega8 dies zu verarbeiten schafft. Nun ist meine Frage, kann mir jemand aus eigener Erfahrung irgendein AD-Wandler µC empfehlen ? Ich denke da an sowas wie AD6640(der ist eigentlich viel zu gut) also: -schafft 1MSPS -8 bit auflösung(6bit ginge auch) -lässt sich relativ leicht mit dem Mikrocontroller koppeln (also hat einen 8bit-Port als Ausgang, keine serielle übertragung) Übrigens, weiss jemand wie schnell in der Praxis ein PORT (z.b PORTB) am ATMega8 ausgelesen werden kann (angenommen 16MHz Taktfrequenz) ? Wäre dankbar für jede Hilfe.
Kannst du Assembler? IN (Port in Register lesen) 1 Takt Bit Setzen/Löschen SBI/CBI 2 Takte Ins RAM speichern 2 Takte OUT (z.B. ins UART-Register) 1 Takt
nabend schau mal auf die seite von maxime da kann man schön suchen lassen. sowas wie du habe ich auch vor und dort auch schon gesucht, wenn du was dazu ausgearbeitet hast könntest du es ja mal posten wäre interessant. danke Mischa ps für alle die gleich wieder mosern von wegen langsam .... . 1. es ist ein anfang 2. wäre es ne möglichkeit auf nem analogen oszi langsamere vorgänge sichtbar zu machen und mal was zu speichern
Danke für die Antworten.
@dave
Das ist die schöne Theorie. Bei kleinen Frequenzen ist das sicher so.
Aber wenn ich jetzt versuche ein Port 255 mal in 255µs auszulesen
dann ist es vielleicht nicht mehr so z.B wegen Kapazitäten an den
Eingängen.Vielleicht muss man deshalb noch ein NOP dazwischen setzen.
@Mischa
Ich bin gerade dabei, vielleicht ist was bei den max... Bausteinen
dabei was die Anforderungen erfüllt, nicht zu teuer ist, und auch
erhältlich.
>wenn du was dazu ausgearbeitet...
Ja mach ich, ich muss nur das Ganze (Quellcode, Schemen) irgendwie
sortieren und für andere Menschen verständlich machen.
Falls es richtig schnell sein soll nimm nen DSP, die schaffen bis in den MSample/s Bereich bei z.T. 14 Bit Auflösung. Wird aber mit dem Basteln halt etwas schwieriger. Dafür ist die Signalweiterverarbeitung mit hoher Geschwindigkeit gewährleistet.
Hallo. Ich habe jetzt geeigneten AD-Wandler gefunden, TDA8703. Der AD-Wandler wird an PORTD angeschlossen, und von da werden die Daten ausgelesen. Nun habe ich aber folgende Frage, lässt sich an dieser Schleife etwas optimieren: loop: ;CLK für den AD-Wandler sbi PORTB,CLK ;2 ;Ergebnis in den r16 Register einlesen in temp,PIND ;1 ;und im SRAM speichern st x+,temp ;2 ;CLK zurücksetzen cbi PORTB,CLK ;2 inc r0 ;1 cpse r0,temp2 ;1-3 rjmp loop ;2 @Mischa Wenn du noch Interesse hast, hier ist so zimmlich alles was bis jetzt ausgearbeitet habe: http://www1.kielnet.net/home/marc.in/pc-oszilloskop/
Wenn du dir 2 Register bereitlegst, das einmal mit Clock High und einmal Low gefüllt ist, kannste 2 Takte sparen. Außerdem würdeste eins sparen, wenn du in r0 oder egal wo den Wert von temp2 reinspeicherst und mit SUBI r0, 1 immer erniedrigst (oder DEC), danach ein BRNE.. SUBI (DEC) kostet 1, BRNE beim RJMP 2, macht 3.
sbi/sbi durch out mit entsprechend präparierten Registern ersetzen. Schleife ist auch überflüssig wenn genug Platz im ROM. Einfach den Code entsprechend oft hintereinander schreiben. => 5 Takte pro Sample.
Danke für die Optimierungstips. @dave Wenn ich das mit BRNE richtig verstehe dann könnte es so aussehen: mov r0,temp2 ;Anzahl der Schleifendurchläufe in r0 loop: .... .... dec r0 brne r0 ; wenn r0 bei 0 angekommen ist, wird rjmp übersprungen rjmp loop @A.K. Das ist mir etwas zu unflexibel, die Anzahl der Schleifendurchläufe soll variabel sein.
superst ! ich abs noch nicht richtig durchforstet weil ich nich an meinem rechenr bin aber bis hier kann ichnur sagen danke ich lads mir nächste woche danke schonmal Mischa
>brne r0 ; wenn r0 bei 0 angekommen ist, wird rjmp übersprungen >rjmp loop Mein Gott, was hab ich da fürn Blödsinn geschrieben. Danke A.K. @Mischa Erschreck dich nur nicht, obwohl ich versucht habe in das ganze Projekt ein wenig Ordnung hinein zu bringen, kann es auf den ersten Blick verwirrend wirken. Und an kann zwar schon Signalverlauf beobachten, es gibt auch noch viel zu tun. Und damit du nicht überrascht bist, PC-Software ist für Linux.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.