mit weniger Microcontrollerpins auskommen

OP #1341426
Hallo,
ich benutze zur zeit einen Atmega 1280 um auf vielen leitungen(14)
digitale signale zu erfassen. Es geht mir um die Zeitdifferenz zwischen
den positiven flanken von festen Leitungspaaren sowie das wieder auf
null gehen.
Nun habe ich überlegt, daß ich mit einem kleinen cpld einen wesentlich
kleineren, billigeren und leichter zu lötenden Controller nehmen könnte.

Ist das eine sinnvolle Idee? Dem stopwatch-beispielprojekt von xilinx
entnehme ich, daß die Datenerfassung im cpld kein großes problem sein
sollte, aber wie kann ich die Information an den Controller übertragen?

Signale wären beispielsweie:
anstieg in 2 ms auf kanal 2
nix
nix
anstien in 6.4 ms auf kanal 3
nix
kanal 2 aus
nix
kanal 3 aus

Ein einfaches serielles Protokoll braucht wohl einen fifo, kann man den
im cpld realisieren? Block-ram gibts ja nicht.

Viele Grüße,
Hansi
Gast #1341437
Also sorry, der ATmega1280 besitzt max. 86(!) IOs. Da solltest Du uns 
mal erklären, warum das Optimieren von 14 IOs zu einem kleineren AVR 
führen kann!? Der Rest scheint ja benutzt zu sein?
Gast #1341537
Ein CPLD bzw. FPGA erlaubt zumindest eine wesentlich höhere 
Zeitauflösung, im sub-Mikrosekunden-Bereich statt im 
Millisekundenbereich den der Prozessor softwaretechnisch erlaubt.

Aber die Daten müssen auch im schlechtesten Fall (rauschen an den 
Leitungen :-) vom CPLD an den Prozessor (bzw. zunaechst mal Speicher) 
weitergeleitet werden können.

Daher verwenden die üblichen LogicAnalyzer-Ansätze ein CPLD welches 
autark die Daten in ein RAM schreibt. Statt dem enfachsten Fall, in dem 
das RAM mit der Abtastrate getaktet wird und genau die Bit 
reingeschrieben werden, die den Eingangsleitungen entsprechen, kann man 
mit mehr Bits (einem Zeitstempel) die Anzahl der Datensätze verringern 
(es werden nur noch bei Änderungen Datensätze geschrieben) und damit die 
Speicherdauer verlängern. Das CPLD macht es dabei mit Leichtigkeit, die 
Adressen zu erzeugen und die Pegeländerungen zu erkennen, und ggf. bei 
Überlauf des Zeitstempels einen Fortsetzungsdatensatz zu schreiben.

Der Prozessor kann danach in Ruhe die Datensätze auswerten und z.B. 
daraus Diagramme zeichnen.

Bei FPGAs gibt es ggf. ausreichend grossen internen Speicher, aber ob 
das die preiswertere Methode ist, mag ich bezweifeln, es ist vielliecht 
die schnellere.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.