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


von Malte _. (malte) Benutzerseite


Angehängte Dateien:

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.

von Malte _. (malte) Benutzerseite


Angehängte Dateien:

Lesenswert?

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

von Simon Küppers (Gast)


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?

von Malte _. (malte) Benutzerseite


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.

von Tosci (Gast)


Lesenswert?

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

von holm (Gast)


Lesenswert?

@Tosci:

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

Gruß,

Holm

von Malte _. (malte) Benutzerseite


Angehängte Dateien:

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ß

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
Noch kein Account? Hier anmelden.