Mal wieder ein Selbstbau-Logicanalyzer mit ATmega.

OP #3913564
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
Angehängte Dateien:
Gast #3913706
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.
#3913909
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
OP #3914499
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
Angehängte Dateien:
Gast #3914714
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.
Gast #3915102
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!
OP #3939444
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.
Angehängte Dateien:
#6929715
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
Persönliche Seite #6929774
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)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren