www.mikrocontroller.net

Forum: Projekte & Code Simpler vier Kanal Signalplotter 50kHz (mit AVR unter Linux)


Autor: Malte __ (malte) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hier ein einfacher vier Kanal Signalplotter mit einer Samplerate von
50kHz.
Als Hardware genügt ein ATMEGA8 mit der üblichen Beschaltung für die
serielle Schnittstelle. Ansonsten wird noch ein für glatte Baudraten
passender Quarz vorausgesetzt z.B. 11,0592MHz.
An den Pins C0..C1 kann das digitale Eingangssignal gelegt werden.
Das PC Programm empfängt die Daten und zeigt sie als Linien an. Ein
sehr sehr simpler Trigger sowie Zoom in und zoom out sind vorhanden.
Das PC Programm läuft derzeit nur unter Linux. Da die Grafik
Bibliotheken aber auch für Windows vorhanden sind dürfe es für jemanden
der weiß wie man unter Windows die serielle Schnittstelle anspricht
nicht schwierig sein das Programm zu portieren.
Das größte Problem ist derzeit dass das PC Programm nicht oft genug die
Schnittstelle abfragt, sonst wäre mit einem 18.432MHz Quarz vermutlich
auch eine Samplerate 100kHz möglich.

50kHz Samplerate ist zwar nicht viel, aber um beispielsweise Signale
einer Infrarot Fernbedienung (mit Hilfe eines TSOP1738) anzuzeigen
reicht es vollkommen.
Im Anhang ein Screenshot des PC Programms welches einen RC5 Code einer
Fernbedienung zeigt. Dabei war an den Eingängen 1 und 2 jeweils ein
TSOP1736 angeschlossen.

Autor: Malte __ (malte) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier die AVR und PC Programme. DerQuellcode ist in C geschrieben und
steht unter der GPL.
Viel Spaß :-)

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das richtig sehe, pollt dein AVR die ganze zeit den port, oder?
Dadurch entstehen ganz kleine Fehlerchen in der Dauer der Impulse. Diese
sind höchstens 1/50kHz groß.

Kannst du nicht die Inputpins über PC- oder normale Interrupts abfragen
lassen?

Autor: Malte __ (malte) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, mein Programm pollt die ganze zeit die Pins. Der ATMEGA8 hat aber
auch nur 2 externe Interrupt Eingänge, somit wäre das mit meinen vier
Pins problematisch. Ein anderes Problem aus meiner Sicht wäre was
passiert wenn der erste Interrupt ausgelöst wird und kurz darauf der
zweite folgt, der erste aber noch nicht fertig verarbeitet ist.

Autor: Tosci (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prima Projekt, leider unter Linux....
Das ist doch ein einfacher Logicanalyser.
Schade das es nur unter Linux läuft.

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tosci:

Sorry, aber wieso ist das schade? Das ist gut so, auch wenn ich kein
Linux verwende (nehme BSD Unix).

Gruß,

Holm

Autor: Malte __ (malte) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal sowohl die PC als auch die AVR Software verbessert. Mit
einem 11,0592MHz Quarz ist jetzt eine Samplerate von knapp 150kHz
möglich. Mit einem 18.432MHz Quarz müssten es bis zu 250000 Samples pro
Sekunde sein.
Auf der AVR Seite musste ich dafür den FIFO auf 256Byte reduzieren
sowie an den Stellen an denen der Compiler keinen optimalen Code
erzeugte, diesen durch Assembler Befehle ersetzen.
Auf der PC Seite verwendet mein Programm jetzt mehrere Threads was ein
häufigeres Abrufen der empfangenen Daten ermöglicht. Der Nachteil
hiervon is allerdings eine CPU Last von 100%.

Ich schrieb:
> An den Pins C0..C1 kann das digitale Eingangssignal gelegt werden.
Sind natürlich vier Eingänge, also C0..C3.

Viel Spaß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.