Einfacher Osziloskop - Bascom

Persönliche Seite #413011
Lesenswert?

Hier habe ich mal in Anlehnung vom Berhards " einfaches DIGITAL-
Oszilloskop (800 Datenpunkte) Assembler" habe ich mal in Bascom Basic
geschrieben.
Es ist einfach gestrickt und wäre dankbar wenn weitere Verbesserungen
einflissen würden.
Später wird noch mehr hinzukommen, da der Mega 32 noch nicht
ausgelastet ist.
Display habe ich das Toschiba TLX-1391 (T6369) 128x128 genommen.
Sollte 100µs für eine Messung machen und eine Messreihe hat 770
Messungen.

Für Anregungen und Tips wäre ich Dankbar, vielleicht sogar eine
Erweiterung. Später kommt es auf www.comwebnet.de wenn einige Sachen
drinne sind ( Oszi, Logikanayler, Logiktester ,?,?)

Alles soll einfach und nachbaubar sein.

AVRNix
Das Gerät müsste bis 10Khz messen können.
Angehängte Dateien:
Admin Persönliche Seite #413014
Lesenswert?

Wie wär's wenn du dafür eine Seite in der Artikelsammlung erstellst?
Einfach die Vorlage von hier rauskopieren
http://www.mikrocontroller.net/wikisoftware/index.php?title=Vorlage_f%C3%BCr_Projektbeschreibung&action=edit
und hier einsetzen, anpassen und abspeichern:
http://www.mikrocontroller.net/wikisoftware/index.php?title=Einfaches_Oszilloskop_mit_Bascom-AVR&action=edit
Gast #413017
Lesenswert?

@Avr-Nix

Hut ab! Vor allem nicht mies machen lassen durch "Experten", die
vielleicht selbst nicht mal eine Taschenlampenbatterie wechseln
können. Mit einem externen Wandler wäre die Sache natürlich fixer
und immer noch bezahlbar.

Gruß Sigma-N
Gast #413018
Lesenswert?

Wieso externer Wandler ?
z.B. mit einem R8C uC der einen 300kHz Wandler besitzt, kann man
wunderbar ein Oszi mit LCD bauen, das 100kHz Signale abtasten kann.
OK, damit ein Sinus noch einigermaßen wie ein Sinus aussieht, sollte
die Frequenz zwar unter 50kHz liegen, aber immerhin ist das ganze dann
brauchbarer als ein 10KS/s Oszi.
Alternativ gehen auch AT90PWM oder ein kleiner dsPIC. Diese beitzen
500kS/s oder gar 1MSs/s ADCs.
Gast #413026
Lesenswert?

Die Überschrift zeigt, das du nicht schreiben kannst, und deine Beiträge
bestätigen die Meinung vieler, das BASCOM Programmierer nicht
programmieren können.
Ich wollte ja eigentlich nur helfen, aber dazu habe ich jetzt keine
Lust mehr.
Persönliche Seite #413027
Lesenswert?

Danke für deine Hilfe. Aber wo ist der bezug zum Projekt ?

Es gibt viele BASCOM Programmier und die machen auch Projekte die sich
nicht verstecken brauchen.

Also, das vielleicht C oder ASM effektiver sind, schön und gut.

Ich wollte - zu meinen Projekt - gerne Hilfe haben, nicht ein gerede
über die bessere Programmiersprache. Oder wie du sagst BASCOM -Müll,
somdern auch die Hardwareseite verbessern.

Da frage ich mich wo da die Hilfe ist?

Ich bedanke mich trozdem für deine Bemühungen.
Gast #413028
Lesenswert?

@Benedikt

Mh genau BASCOM Programierer können garnix und der Code ist natürlich C
der ausieht wie Basic, weil das kann ja eh nix was?!
Ich glaub auf deine "Hilfe" kann man verzichten, wenn ich angemacht
werden will geh ich sonstwohin wo sich unfreundliche Leute rumtreiben.
tz...
Gast #413029
Lesenswert?

@ Avr-nix
Schönes Projekt und lass Dich nicht entmutigen von solchen
Wichtigtuern. Ich programmiere auch in Bascom (und Assembler) und habe
schon so einige Projekte hinter mir. Der Programmierstil ist
entscheidend und nicht die Sprache.
So nun zum Prescaler:
Schau mal auf Seite 204 und auf Seite 216 des Datenblattes. Dort
findest Du die Anleitung, wie Du die Register entsprechend setzen mußt.

Ich würde auch nochmal den Befehl "fusing" überdenken, braucht sehr
viel Rechenzeit. Vielleicht findest Du eine andere Lösung.

Gruß
Ronny
Persönliche Seite #413030
Lesenswert?

@ronny:

Denke darüber nach, allerdings ist das nach der Messreihe.
Das Datenblatt werde ich auch nochmal zu Hilfe nehmen.

Kann man den in Bascom das so beeinflussen die in C bzw ASM?
Ich benutze GETADC Routie mit dem Prescaler AUTO

In der Hilfe sagt folgedes aus:
PRESCALER
  A numeric constant for the clock divider. Use AUTO to let the
compiler   generate the best value depending on the XTAL

Also hat man doch nach einen Compilervorgang die "Optimale"
Einstellung.

Und dieser Code wird dann erstellt laut der Hilfe:

The following ASM is generated(depending on the chip)

In _temp1,ADCSR ; get settings of ADC
Ori _temp1, XXX ; or with settings
Out ADCSR,_temp1 ; write back to ADC register

Und der Auto als Prescaler nimmt den höchsten Wert ( 200Khz)


Frage:

Laut Datenblatt kann der AVR ATM 32 -> 15KSps

Vielleicht schmeisse ich jetzt was durcheunander, aber kann er 200KHz
samplen oder jetzt mit 15 KSps.

Ich bin jetzt von den 15KSps ausgegangen bei der Messung.
Gast #413031
Lesenswert?

Das ist zwar nach der Meßreihe geht aber in die Meßzeit mit ein
(for/next-Schleife).
Die Register kannst Du genauso setzen wie in C oder ASM.
Bsp Voreinstellung:

ADMUX = &B11000000 'interne Referenz und Kanal ADC0
ADCSRA = &B11010111 'ADC ein, Start ADC, Vorteiler 128 für 125Khz
ADC-Takt

Die 200Khz (was eh nicht geht bei 16Mhz) ist die Taktrate des
AD-Wandlers, die Samplingrate hängt vom Programmcode (auch was noch
folgt bis zur nächsten Messung) und ob Single-Messung oder
Freerun-Messung. Der AVR braucht eine gewisse Anzahl von ADC-Takten zum
Wandeln (siehe Seite 206 Datenblatt).
Ich habe mich am Anfang auch ums Lesen des Datenblattes gedrückt, aber
da kommt Du nicht dran vorbei.

Gruß
Ronny
Gast #413032
Lesenswert?

"Use AUTO to let the
compiler   generate the best value depending on the XTAL

Also hat man doch nach einen Compilervorgang die "Optimale"
Einstellung."

Optimal(?) vielleicht, aber nicht die maximal mögliche. Den ADC kann
man schneller clocken, dann hat er aber nicht mehr die volle
10Bit-Auflösung. Wenn dir 7-8 Bit reichen kommst du bis etwa 80kHz
Samplingrate. Der ADC braucht 13 Clocks für Wandlung und Sampling, das
gibt also einen ADC-Clock von etwa 1 MHz. Bei 16MHz Quartz also einen
Teiler von 16 einstellen statt AUTO.

Gruss Andi
Persönliche Seite #413034
Lesenswert?

@Ronny:
Wenn man 10 Bit braucht ist das sicher richtig, aber wenn einem 8 Bit
reichen kann man den ADC auch gerne schneller betreiben. Ich bastel
hier gerade ein ähnliches Projekt und habe mich auf 7Bit Auflösung
beschränkt. Der Flaschenhals ist bei mir derzeit aber die
Geschwindigkeit der seriellen Schnittstelle zur Übertragung der Daten
zum PC.
Persönliche Seite #413035
Lesenswert?

@Andi: habe den Teiler auf 16 eingestellt :) geht echt schneller.
Wie mache ich den Timebase einstellung?

Bei der alten Variante mache ich eine Messreihe und nehme entspreched
jede xten Wert zur Darstellung.

Da jetzt die Abtastung viel höher ist bekomme ich nicht das Signal ganz
auf dem GLCD.

Als nächstes versuche ich mal den AD Wandler in BAscom in ASM zu
proggen.

Das Datenblatt werde ich heute Abend durchgehen. habe mal es
Überflogen.
Bei Freerunning Mode (Normal Conversion S207)braucht er 1x 13 ADC Takte
sonst 1,5-2 Takte für jede Wandlung

Da sind doch 10BitWandler drinne, wieso ist dann 8Bit schneller das
wird doch nur auf Zwei ADCH + L Register reingepackt und ich lese bei
8Bit nur ADCH aus (S.203)
Sehe ich das soweit richtig?
Persönliche Seite #413036
Lesenswert?

Es bleibt ein 10Bit Wandler, aber wenn du ihn schneller als im
Datenblatt angegeben betreibtst, sind irgendwann die niederwertigsten
Bits reines Rauschen und damit wertlos, die höherwertigen (zB. 8Bit)
aber noch gut benutzbar. Wenn du 8Bit aus ADCH auslesen willst musst du
dafür vorher das ADLAR Bit setzen, sonst stünden in ADCH nur die oberen
2 Bit.
Persönliche Seite #413038
Lesenswert?

Das Projekt mache ich später weiter, das Display mit dem T6963C bekommt
man in verschieden Auflösungen und lässt sich gut anpassen im
Programm.

Eine C Lib gibt es in der Codesammlung. Im Bascom ist die Lib schon
drinne.

Da bei mir der Kontrast schei... ist. Probiere ich es mit einen Siemens
 S65 Farb Display, allerdings steht es am Anfang des Projekts.

Da ich kein ASM kann, werde ich sehen wie ich schnelles Sampling und
Timebaseeinstellung optimieren lassen.
Gast #413043
Lesenswert?

Dank für das schnelle Reinstellen.
würde es Dir es was ausmachen, das Bord als Eagle-Datei zu
übersenden?.
Als Display, so nehme ich an, wirst Du das selbe wie auf
Deiner Hompage verwenden wollen (Typ 020....)?
Dann mal ran.Hab son Ding bestellt.
Gast #413045
Lesenswert?

Ja richtig,es werden wohl dann nur 5 Pins benötigt und
2,9V Versorgung zusätzlich.OK besten Dank erstmal.Vielleicht
kriegst Du es bis Jahresende hin.Ich hab Geduld.Das neue
Display muss auch erst mal am Testbord laufen.
Gast #413046
Lesenswert?

Hallo,
für die S65 Ansteuerung reicht doch der Stecker PL3(SPI)?
LCD.. muss dann doch nicht mehr herausgrführt werden?
Dein "Kontakt" auf Deiner Hompage funktioniert irgendwie
nicht(Error 80)
Gast #413050
Lesenswert?

Mein reden, übrigens Cristian K. schliesst den Pin 1,8 V
an 2,9 V mit an.Seltsam?
Also SPI-Schnittstelle + Stromversorgung,das wärs für S65.
Vorschlag:Vielleicht bringst Du Dein Kontakt auf der Hompage
in Gange und wir brauchen das Forum nicht "zumüllen".
Das waren bestimmt nicht die letzten Fragen.
Persönliche Seite #413051
Lesenswert?

laut Thread, soll der 1,8V nicht connect sein, habe eine Interface mit
Spannungsteiler trozdem auf 1V8 angeschlossen geht auch auf 2,9V.
Die HP bringe ich in den nächsten Tagen in Ordung.

Die 1. Version mit dem S65 denke mal kommt mit einfachen Oszi
Aufzeichnung in den nächsten Tagen Online.
Also 10Bit Messung und Ausgabe der Werte als Graph erstmal.
Gast #413053
Lesenswert?

Der 1V8 Pin ist die Interface Spannung (also die Spannung mit denen dann
das SPI des Displays läuft) und war beim Handy eben 1,8V, man kann
jedoch eine beliebige Spannung (innerhalb der spezifikationen) dort
anschließen.
Gast #413056
Lesenswert?

Hallo AVRNix,
muss noch mal dumm fragen:Brauche was für Wechselspannung?
Du hast doch auf den Display ein Sinus "gemalt".Wird nicht
nach jeden Messvorgang ein Pixel "gemalt"?
Spannungsumschaltung? Spannungsteilerkette, bei AC Kondensator vor
und mit DC vorspannen,x Achse auf Höhe der DC einstellen(Datenpunkt
verändern)
Nun ich habe nur Erfahrung mit Nokia 3310 Display.
Oder sehe ich das zu einfach.
Persönliche Seite #413057
Lesenswert?

Du hast recht :-)

Diese Grundschaltung misst Mischspannung bis Aref.
Bei Wechselspannung muss man ein Kondensator zur Abblockung der
Gleichspannung davor schalten.

Für einfache sachen noch ein Spannungteiler der aus die 5V einen Offset
von 0 auf 2,5V macht ( 2 x 10k Widerstände z.B.).

Zur Messung: Es wird eine Messreihe erstellt und auf dem LCD
ausgegeben.

Meine HP: www.comwebnet.de Kontakt sollte gehen dort gibts auch ein
Forum
Persönliche Seite #739587
Lesenswert?

Die Adresse zum einfachen Osziloskop auf der Homepage hat sich geändert.

Die ist neu:

http://comwebnet.weimars.net/index.php?option=com_content&task=view&id=8&Itemid=49

eine SRAM 32 K Erweiterung ist in Planung, sowie Zusätze.
eine 8Bit 1MSPS Sampling ADC Ersatz findet man im Forum auch weitere 
Infos dort:

http://comwebnet.weimars.net/forum/forumdisplay.php?fid=20


Frohes neues Jahr 2008!
 AVRNix

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren