Hallo, ich habe hier einen kleinen Logik Analysator gebastelt. Das besondere ist eigentlich das die Hardware nur ein ATMega32 und ein USBN9604 ist. http://www.ixbat.de/index.php?page_id=92 Es gibt ein kleines Konsolenprogramm (ein grafisches folgt evtl. bald) mit dem man die Messungen starten und steuern kann. Der Logik Analysator kann in 3 Arten betrieben werden. 1. Online Modus (max. 250KHz), ueber den USB Bus werden die Daten abgeholt so das es zu keinem Stau kommt. 2. Interne Modus, es werden bis zu 1000 Werte in den internen RAM gespeichert die danach abgeholt werden koennen. (sollte bis 4 MHz gehen) 3. Snapshot Modus, hier kann man einzelne Werte abholen. Ist eher fuer langsame Versuche. Dazu gibt es zwei Triggerarten: Einmal einen der auf die Flanke von einem Signal schaut und wenn das entsprechende Ereignis aufgereten ist statet die Messung (online oder intern) Oder man gibt ein Muster vor welches immer verglichen wird, und wenn es uebereinstimmt startet ebenfalls die Messung. Das ganze laeuft unter Windows und Linux. Gruss Bene
ist schon cool, aber irgendwie sinnlos :( Externes SRAM und ein CPLD könnten ein bischen mehr speed bringen.
Es ging ja nicht um Speed. Sondern einfach guenstig messen. Beim CPLD brauchst dann auch wieder ne Datenuebertragung, der SRAM ist dann oft schlecht zum loeten usw.... Also einfach ohne grosse Aktionen messen, so dass es fuers Basteln langt.
Cooles Teil, ich hatte sowas auch schon ewig vor! Nun werde ich dein nehmen! Dickes Lob!
ich find auch dass es als Bastlerobjekt was richtig Feines ist. Klar wirds ne Menge besserer Geräte geben aber der Aufwand hier ist einfach bestechend einfach und die Leistung dürfte für die meisten Bastler mehr als ausreichend sein. Ich denk, bei der nächsten Reichelt-Bestellung sind die nötigen Teile einfach mal mit dabei um so ein Ding einfach mal nebenbei aufgebaut zu haben. Daumen hoch und weiter so! bye Frank
@Benedikt, gute Idee, klein schnucklig und für serielle Protokolle völlig ausreichend. Den probiere ich mal. @Lupin, " Externes SRAM und ein CPLD könnten ein bischen mehr speed bringen." und genau da sind alle hiesigen Projekte immer gescheitert oder zu aufwendig geowrden.
250kHz..schafft das nicht auch schon der LPT-Port alleine?
Puh keine Ahnung, aber mit USB in Kombination mit der libusb (http://libusb.sf.net) hat man eine Betriebssystem unabhaengige schoene Schnittstelle. Dazu hat man direkt eine Spannungsversorgung dabei. Und die Anzahl der USB Schnittstellen an einem PC im Gegensatz zur parallelen Schnittstelle ist klar auch ein Vorteil fuer USB. Ich denke man sollte neue Projekte wenn moeglich immer mit aktuellen Schnittstellen durchfuehren.
Hallo Benedikt, laß Dich von den 250 kHz nicht runter machen. VIEL interseeanter finde ich die OFFLINE Methode mit 4-5 MHz. Läßt sich da mit ext RAM zB. aus alten 486ér Board noch was rausholen? Wie siehts mit ner geschlossenen Oberfläche aus ??? Ohne 2 Programme mit Parameterübergabe nutzen zu müssen ?? Da ist noch Potential, denke ich. Ich meine für die kleinen Analyser Dinge reicht der DICKE aus !!! Und wer mehr braucht, soll es auch haben.... aber nicht für 15 EUR !! Also bleib dran....
Also fuer den "dickeren Geldbeutel" waere der ATMega128 eine feine Sache. Der hat ein externes Speicherinterface. Jedoch ist der auch wieder in SMD Bauweise. Beim ATMega32 haette noch genug Ports frei und koennte so ein Interface emulieren. Die ATmegas schaffen pro Takt einen Befehl, also braucht ein Befehl ca 62 ns (bei 16MHz). Wenn man mal sagt wir wollen mit 5 MHz aufzeichnen muesste man alle 200 ns Daten lesen. Ich glaube das wird fast zu knapp (3 Befehle fuers Speichern). Bei 1 MHz was auch super schnell ist fuer diese Messungen haetten wir Zeit fuer 16 Befehle, denk damit sollte sich RAM vollschreiben lassen. Hast du mit einem bestimmten Baustein schon Erfahrung? Dann sollte man das verwirklichen, wobei da natuerlich wieder ein Baustein in DIP Form besser waere so kann man es einfacher nachbauen. Ich schau nachher mal meine Speicherschachtel durch. Irgendeinen Atmel Speicher habe ich evtl. noch ist nur die Frage wie schnell die sich beschreiben lassen und wie gross die sind.
Wiso nehmen alle gleich mega32 aufwärts ? Ein mega8515 bietet auch ein Speicherinterface und ausreichend Speicher für solche Programme. Mit einer Pseudo DMA Schaltung (AVR erzeugt WR Impuls und die Adressen, die Daten laufen direkt zum SRAM), sollte man ohne großen Aufwand ein Byte pro 6 Takte aufzeichnen können: loop: ld temp, X+ cpi XH, WERT brne loop Das macht bei 16MHz also maximal 2,66MByte/s.
Ah der ist ja cool, den kannte ich gar nicht. Danke werde ich mir gleich mal bestellen. Kennst du einen 64 K Speicher in DIP ? Das waere dann die ideale Kombination.
64k Speicher sind sehr selten. Es gibt nur 2k,8k,32k,128k usw. Schau mal bei Reichelt, da gibt es 55ns SRAM. Ansonsten ein 386 oder 486er Mainboard schlachten.
@Benedikt, ah jetzt sehe ich durch. du bist ein neuer Benedikt. von dem anderen hatte ich ja schon ne Menge Stoff gelesen. Also auf den alten 386ér und 486ér Boards sind meit sowas wie 24257 drauf. Ist nen 32k x 8 SRAM CMOS. Die haben 15nS !!!!! Die wären warscheinlich ideal für sowas. Billig beschaffbar, DIL und schnell. Ich habe hier noch einige. 1 oder 2 Stk davon sollten doch schon reichen oder ?? Datenblatt: http://www.datasheetcatalog.com/datasheets_pdf/W/2/4/2/W24257AK-20.shtml Also schaun mer mal.
Hallo, ich habe mit mal folgendes überlegt und bauer das gerade. Auf einem 486er Board hab ich noch 8x TC55328P-20 gefunden (32k Speicher, 20ns). 5 4-bit Zähler (74HCT161) werden zu einem 20 Bit Zähler zusammengeschaltet und damit habe ich einen 20 Bit Address-Bus. 15 Bit (0-14) sind für die Addressen pro TC55328P , Address-Bus Leitungen 15,16,17 gehen in einen 74HCT138 (3-8 Decoder invering), so dass ich die 8 TC55328P jeweils über die /CE Leitung ein/aus-schalten kann. Die Ausgänge der TC55328P werden auf einen 8 Bit Datenbus gegeben. An diese Bus sind auch die 5 74HCT161 angeschlossen, denn diese Zähler können auch mit einem Wert programmiert werden. Damit habe ich einen Speichermodul, das nach Aussen nur noch den 8 Bit Datenbus hat sowie ein paar Steuerleitungen, über die die folgenden Funktionen realisiert werden: ReadMem, WriteMem, IncAddress, ResetAddress, SetAddress (an der Stelle bin ich noch am überlegen, welche Steuerleitungen ich brauche). Um dieses Modul in einem Logic Analyzer zu nutzen lasse ich von einem Quarz nun die Auzeichnungsfreuenz vorgeben. Dabei kann der Quarz entweder direkt an die Leitung IncAddress angeschlossen werden oder noch ein Teiler zwischengeschaltet werden. Vom AVR wird dann nur noch ein die Leitung "WriteMem" kontrolliert. Sobald die auf High geht werden Daten aufgeteichnet. Später kann der AVR die Daten dann auslesen. Damit sollten eigentlich nur noch die 20ns der TC55328P der begrenzende Faktor sein und nicht mehr der AVR. Ich glaube zwar nicht, dass damit auch praktisch 50MHz erreicht werden können, aber 10 MHz erscheinen mir doch realistisch. Soweit meine Idee. Was dann noch fehlt ist ein Trigger Schaltkreis sowie eine autmatische Abschaltung wenn der Speicher voll ist bzw. zu x Prozenz voll ist. Letzteres könnte dann verwendet werden, um auch Daten vor dem Tigger-Event aufzeichnen zu können. Die Auszeichnungs-Abschaltung plane ich evtl über einen zweiten Zähler zu realisieren, der dann synchon zu den 74HCT161 des Speichers läuft. Er wird mit einem bestimmten Wert programmiert (je nachdem, wieviel Daten vor/nach dem Trigger-Event verfügbar sein sollen), wenn der Trigger zuschlägt. Da er auch aus 74HCT161 besteht, dann kann das Carry-Signal verwendet werden, um einen Überlauf zu erkennen. Dieser löst dann das Ende der Aufzeichnung aus und der AVR muss sich hier ebenfalls um nichts kömmenr. Er schaltet das das hanze nur schaft und bekommt am Ende noch einen Interrupt, wenn die Aufzeichnung fertig ist. Dann liest er die Daten aus und dann die dem PC geben. Was meint hier, ist das Projekt bzw der Ansatz letztlich realistisch, um rein mit Standard-Logokbauteilen das Maximum rauszuholen?
Gute Idee! >Da er auch aus 74HCT161 besteht, dann kann das Carry-Signal >verwendet werden, um einen Überlauf zu erkennen. Dieser löst dann das >Ende der Aufzeichnung aus und der AVR muss sich hier ebenfalls um >nichts kömmenr. Aber warum nicht einfach ne And-logik so beschalten das sie bei der gewünschten addresse ein high ausgibt? Oder hab ich da jetz was falsch verstanden? MfG Manuel
Das mit der AND-Logik wäre auch machbar. Aber das halte ich für wesentlich aufwendiger, weil das noch mehr Bauteile braucht. Mit den 161er (von denen ich genug in der Basatelkiste habe) wären das 5 ICs und es würde für jede 20 Bit Adresse gehen. Ich kommt zumindest jetzt gerade nicht drauf, wie so eine AND-Logik aus Standardbauteilen aussehen könnte, die auch für jede Adresse geht. Axel
Also die and logic ist einfach wenn der ram voll ist sind alle adressen auf 1 also 0xFFFFF.Die Gatter mit je einem eingang an die Adressleitung so schalten sich 10 gatter frei die dann 5 dann 2(3Leitungen) dann 1 dann zu letzt einer der High get. | | | | | | | | | | | | | | | | | | | | A1A2 A1A2 A1A2 A1A2 A1A2 A1A2 A1A2 A1A2 A1A2 A1A2 \ / \ / \ / \ / \ / A1A2 A1A2 A1A2 A1A2 A1A2 \ / \ A1A2 A1A2 / \ -----A1A2----- / \ / ------A1A2------ | Die Logic kann mann auch mit 4er And Gatter machen. Mit 2ern $ pro IC Sind das 5 IC´s
Gibt es die Variante auch ohne die USB geschichte? Ich werd aus dem Quelltext nicht ganz klar, wird der USB-Chip noch zum Steuern benutzt? Ist es möglich noch etwas mehr Samples als 1000 zu bekommen, aber da wird es vermutlich ein Speicherproblem geben? Ich find das Projekt sehr Interessant, leider hab ich es bisher nicht geschaft die Software auf dem PC zum laufen zubekommen, ich benutz Win und irgendwie find ich nicht die richtigen Programme dafür, Bitte um Hilfe. Gruß Neo
Wie wäre es, anstatt 8bit, 2 oder 4bit zu haben, aber bei 4 oder 2facher samplerate. Für mich würde es genügen, wenn man zwischen den Modi umschalten kann.
Hallo ich bin auch sehr begeistert von dieser Idee, und hab mir vorgenommen eine GUI zu machen, damit man nicht mehr von der Konsole aus alles machen muss. Leider läuft beim mir das Ding noch nicht so richtig. Wenn ich das Programm folgendermassen starte: logic2vcd -f messung.vcd -R online -s 1ms -n 1000 dann bleibt er mir bei found hängen, und das bei XP und openSuse 11. Kann mir da wer weiterhelfen? Ich bin mir auch nicht ganz sicher ob der INF Treiber für Windows korrekt ist, den ich dafür abgeändert habe. Im Anhang sin die Dateiversionen die ich verwendet habe P.S. Wers noch nicht weiss, bei openSuse ist USBProg bereits in den Repositories drin.
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.