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.
Und hier die AVR und PC Programme. DerQuellcode ist in C geschrieben und steht unter der GPL. Viel Spaß :-)
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?
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.
Prima Projekt, leider unter Linux.... Das ist doch ein einfacher Logicanalyser. Schade das es nur unter Linux läuft.
@Tosci: Sorry, aber wieso ist das schade? Das ist gut so, auch wenn ich kein Linux verwende (nehme BSD Unix). Gruß, Holm
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.