Forum: Mikrocontroller und Digitale Elektronik Mal wieder ein Selbstbau-Logicanalyzer mit ATmega.


von Horst M. (horst)


Angehängte Dateien:

Lesenswert?

Hallo,

bin vor einiger Zeit in einer Werbe-Mail auf den LA6 von ELV gestoßen.
Nach etwas mühseliger Recherche der Features (u.a. nur max. 100 kHz 
Samplerate) dachte ich mir - da geht noch was.
Mittlerweile läuft nun auf einem ATmega644PA (Ziel ist der ATmega1284) 
unter großzügiger Auslegung der Chip-Grenzwerte eine LA-Software mit 
max. 10 MHz Samplerate bei 8 Eingängen und 5 MHz bei 16 Eingängen.
Die Darstellung erfolgt auf einem 128x128Pixel-LCD. RS232, SPI und I2C 
können direkt auf dem Gerät interpretiert werden. Je vier Eingänge 
zusammengefaßt können als Halbbyte/Nibble dargestellt werden.
Screenshots und der Inhalt des Trace-Memorys lassen sich über eine 
serielle Schnittstelle exportieren.

Damit man einen Eindruck bekommt, habe ich mal schnell mit einem 
Frontplattendesigner ein Design zusammengebastelt (nicht maßstäblich). 
Die Screenshots sind vom Analyzer gezogen und eingefügt.

8 Eingänge
[[Bild:Analyzer1.gif]]

16 Eingänge
[[Bild:Analyzer2.gif]]

8 Eingänge
SPI Mosi/Miso, I2C, RS232 (von oben nach unten)
[[Bild:Analyzer3.gif]]

Mit dem Bild-Einfügen klappt's irgendwie nicht.

Die Kosten für Bauelemente sind überschaubar, das LCD und die 
Inkrementalgeber sowie weiterer Kleinkram sind von Pollin, den ATmega 
gibt's auch dort. Nur den 30 MHz-Quarzoszillator muß man sich anderswo 
besorgen.

Ist jemand interessiert dran (vielleicht als Bastelei über die 
Weihnachtstage)?
Dann würde ich einen Schaltplan machen (Platine gibt's wie üblich nicht 
bei mir, Aufbau ist auf Lochraster).

Gruß
Horst

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Horst Meier schrieb:

> Mittlerweile läuft nun auf einem ATmega644PA (Ziel ist der ATmega1284)
> unter großzügiger Auslegung der Chip-Grenzwerte eine LA-Software mit
> max. 10 MHz Samplerate bei 8 Eingängen und 5 MHz bei 16 Eingängen.

Das glaube ich nicht. Die kürzestmögliche Read/Store-Sequenz für ein 
Sample ist:

 in reg,port    ;1
 st idxreg+,reg ;2
                ;-
                ;3

D.h.: selbst mit vollständigem loop unrolling müßtest du den armen AVR 
mit 30MHz betreiben, um die 10MHz Samplefrequenz zu schaffen.

Da ich aber aus eigenen praktischen Erfahrungen weiß, daß schon 24MHz 
nur wenig zuverlässig erreichbar sind, 30MHz aber niemals (jedenfalls 
nicht bei Zimmertemperatur), würde ich mal behaupten, daß du schlicht 
lügst. Oder allermindestens unzulässig verallgemeinerst.

> Die Darstellung erfolgt auf einem 128x128Pixel-LCD. RS232, SPI und I2C
> können direkt auf dem Gerät interpretiert werden. Je vier Eingänge
> zusammengefaßt können als Halbbyte/Nibble dargestellt werden.
> Screenshots und der Inhalt des Trace-Memorys lassen sich über eine
> serielle Schnittstelle exportieren.

Gähn...

> Nur den 30 MHz-Quarzoszillator muß man sich anderswo
> besorgen.

Oops.Du hast also tatsächlich einen AVR mit 30MHz zum Laufen bekommen? 
Mit wievielen Exemplaren hat das funktioniert? Bei welcher Spannung und 
Temperatur?

Meine Ausbeute ist schon bei 24,xMhz und 5.0..5.5V bei Zimmertemperatur 
ziemlich kläglich, >80% der Exemplare (Typen: 
13A,2313A,4313,84,85,841,644P,1284P, jeweils mindestens 10 Exemplare) 
schaffen schon das nicht zuverlässig.

Natürlich habe ich auch eine Testanwendung verwendet, die sich vor allem 
damit beschäftigt hat, sehr viel zu rechnen und die Ergebnisse ihrer 
Rechnerei auch gleich selbst zu überprüfen...

Aber wie gesagt: Mit 30MHz hat bei mir kein einziges Exemplar des 
Testfeldes mehr funktioniert, nichtmal andeutungsweise, d.h.: sie haben 
es nichtmal geschafft, die Startmeldung für den Testbeginn per UART für 
den Peer lesbar loszuwerden, sind also wohl schon bei der 
Initialisierung der Hardware abgestürzt.

von Sven (Gast)


Lesenswert?

Avr 30 mhz Mit einem Xmega? Oder Taktest du die 30 Mhz extern in ein 
Ram?

von Steffen (Gast)


Lesenswert?

Xmega bis 32MHz

von Mirco (Gast)


Lesenswert?

Steffen schrieb:
> Xmega bis 32MHz

STM32F4 zum gleichen Preis 168 MHz, 1MB Flash 500kB RAM, ...

STM32F4DISCOVERY zum Preis von 14€ gibt schon fertige Logic Analyzer 
Projekte die dringend weiterbearbeitet werden müssen ...

von Anton (Gast)


Lesenswert?

Mirco schrieb:
> STM32F4 zum gleichen Preis 168 MHz
Keine falschen Erwartungen schüren: die IO sind wesentlich langsamer...

von Ronny S. (phoenix-0815)


Lesenswert?

Horst Meier schrieb:
> Ist jemand interessiert dran (vielleicht als Bastelei über die
> Weihnachtstage)?
> Dann würde ich einen Schaltplan machen (Platine gibt's wie üblich nicht
> bei mir, Aufbau ist auf Lochraster).
>
> Gruß
> Horst

Hallo,
also ich würde mir das rein Interessehalber mal aufbauen.

Schon um mir mal die Sache mit dem Übertakten mal genauer zu betrachten.

Gruß Ronny

von Georg G. (df2au)


Lesenswert?

Was spricht dagegen, Schaltbild und Software hier zu posten? Niemand ist 
gezwungen, es sich anzusehen oder gar nach zu bauen. Aber der eine oder 
andere bekommt vielleicht eine Anregung für sein eigenes Projekt.

von fred (Gast)


Lesenswert?

HOAX

von Horst M. (horst)


Angehängte Dateien:

Lesenswert?

OK,

hier kommt der Schaltplan.

Habe heute mal einen ATmega1284 draufgesteckt - läuft.
Das anliegende Hexfile ist für 14000 Bytes Tracebuffer assembliert.
Serielles Interface ist auf 9k6 8n1 eingestellt.
Fuses:
Extended 0xFF
High     0xD1
LOW      0x7F
(BODLEVEL disabled, OCDEN off, JTAGEN off, WDTON off, EESAVE on, BOOTRST 
off, CKDIV8 on, CKOUT off, SUT_CKSEL Ext. Crystal 8- MHz/Start-up time 
16K CK + 65ms)

Sourcecode kommt noch - sind noch zwei, drei Sachen zu erledigen.

Gruß
Horst

von Peter (Gast)


Lesenswert?

Anton schrieb:
> Mirco schrieb:
>> STM32F4 zum gleichen Preis 168 MHz
> Keine falschen Erwartungen schüren: die IO sind wesentlich langsamer...

Ach herje der AHB geht ja nur mit 50 MHz. Also kann man den Pin nur 
jeden 4. Zyklus einlesen. Verdammt. Dann doch lieber einen 32 MHz 
Controller der hat sicher einen schnelleren Peripherie-Takt als ein 178 
MHz-ler.

von Thomas (kosmos)


Lesenswert?

Es gibt doch die kombinierten AVRs+FPGA dort ein externes SRAM drauf und 
man könnte wesentlich schneller die Daten ins SRAM takten. Zum Auslesen, 
darstellen usw. Dann den AVR nehmen.

von BastiDerBastler (Gast)


Lesenswert?

Ich arbeite mich ja nun gerade in den STM32F4 ein und würde gerne 
wissen, warum dessen GPIO wesentlich langsamer sind als der Bus, an dem 
sie hängen? Wenn ich per DMA übertrage (läuft auch auf AHB-Takt) und den 
SRAM- sowie AHB-Peripheralbus ansonsten freihalte, müsste das doch recht 
fix gehen?
Bei der Ausgabe ist man natürlich an die Kräftigkeit der Ausgangstreiber 
gebunden, aber wie sieht es beim Lesen aus?
Wenn man per Mikroprozessor liest ist man natürlich dadurch gebunden, 
dass man lesen, schreiben, inkrementieren und loopen muss, also ist man 
da natürlich sehr viel langsamer unterwegs.
Würde mich freuen, wenn ihr da mehr Info habt!

von Horst M. (horst)


Angehängte Dateien:

Lesenswert?

OK, hier kommt der Quellkode (wird wahrscheinlich nicht allzuviele 
Interessenten finden...). Entry-File ist "Logic Analyzer.asm", ich 
arbeite mit AVR Studio 4.19.
Hab hier und da noch ein paar Bytes im Flash gefunden, sodaß nun 15000 
Abtastwerte (bzw. 7500 bei 16 Eingängen) gelesen und gespeichert werden 
können.
Das Flash ist jetzt allerdings erstmal randvoll, ein weiterer 
Protokollinterpreter ist so nicht mehr unterzubringen. Die 
Full-Speed-Traceroutinen könnten aber auch gekürzt werden (die Software 
kann damit umgehen), das würde wieder Platz schaffen.
Das Hex-File ist für 15000/7500 Abtastwerte und 57600 Bit/s serielle 
Geschwindigkeit assembliert.
Eine kurze Beschreibung der Funktionen und ein paar Bilder vom 
Testaufbau hänge ich noch an.
Ich habe mit einem ATmega644PA (abgespeckt assembliert, versteht sich) 
und zwei ATmega1284P erfolgreich getestet, läuft sogar noch mit etwas 
weniger als 5V Betriebsspannung.

von avr (Gast)


Lesenswert?

Mirco schrieb:
> STM32F4 zum gleichen Preis 168 MHz, 1MB Flash 500kB RAM, ...

Hauptsache mal getrollt, oder?

Aber ein Stm32f4 für 2€ mit 500KB Ram wäre nicht schlecht - wenn es ihn 
gäbe...

von Conny G. (conny_g)


Lesenswert?

Ich finde es ein nettes Projekt!

von Ralle E. (ralleeiner)


Lesenswert?

Hallo Horst,

ich finde das Bedienkonzept und die PC-unabhängige Anzeige mit eigenem 
Display super, ich habe nach so etwas gesucht. Dieser Eintra ist zwar 
schon älter,  aber ich würde es trotzdem gerne nachbauen. Wenn ich dein 
fertiges hex-file vom Download nehme, für welchen Controller genau ist 
das kompiliert? Danke und Gruß, Ralle

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Ralle E. schrieb:
> Wenn ich dein
> fertiges hex-file vom Download nehme, für welchen Controller genau ist
> das kompiliert? Danke und Gruß, Ralle

Der folgende Spruch ist hier im Forum nicht unbedingt willkommen, aber 
er passt nun mal wieder wie die Faust aufs Auge:

Wer lesen kann ist klar im Vorteil!

Horst M. schrieb:
> Habe heute mal einen ATmega1284 draufgesteckt - läuft.
> Das anliegende Hexfile ist für 14000 Bytes Tracebuffer assembliert.
> Serielles Interface ist auf 9k6 8n1 eingestellt.
> Fuses:
> Extended 0xFF
> High     0xD1
> LOW      0x7F
> (BODLEVEL disabled, OCDEN off, JTAGEN off, WDTON off, EESAVE on, BOOTRST
> off, CKDIV8 on, CKOUT off, SUT_CKSEL Ext. Crystal 8- MHz/Start-up time
> 16K CK + 65ms)

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.