Beim Prozessor würde ich aber nochmal genau nachprüfen ob der für deine Zwecke ausreicht.
Du hast geschrieben du möchtest Pulspakete messen, das impliziert für mich mehrere Pulszeiten hintereinander. Von welchen Pausenzeiten zwischen den Pulsen reden wir hier?
Meine Erfahrung hat gezeigt, dass DMAs je nach spezieller Ausprägung bei Cortex basierten Prozessoren richtig langsam sein können, je nachdem wie die Busmatrix aufgebaut ist und der DMA seine sog. Transferdeskriptoren speichert.
Ich persönlich würde nach eminer Erfahrung einen XMega wählen(2 Timer arbeiten mit bis zu 96MHz), da ist der Transfer von 16Bit z.B. innerhalb weniger Takte(32MHz) erledigt. Bei einem ATSAM von Atmel waren das schon fast 2 duzend Takte(bis zu 120MHz ... glaub ich) die er brauchte um den nächsten Transfer durchzuführen und wenn der Bus gerade der Meinung war ein Busy Flag hoch zu halten dehnte sich die Verzögerung auch noch undefiniert stark aus.
Bei STM32 gibt es Erfahrungsgemäß dieses Problem nicht, die arbeiten ähnlich schnell wie die XMegas.
tl;dr;
Mach zur Sicherheit einen Test, starte einen Timer mit max. Clock und einne 2ten Timer mit langsamerer Clock. Im ersten Timer stellst du die Periode auf 255 und benutzt den Overflow als Trigger für den DMA, der dir einfach fortlaufend die Timerwerte des 2ten Timer ind en speicher schreibt. Wenn der DMA mal einen Takt verpassst siehst du das sofort in deinen Timestamps!
Jetzt reduzierst du einfach die Periodendauer des ersten Timer so lang bis du Sprünge bekommst. Dann weist du wie schnell dein DMA ticken kann.
Ich habe mir das Manual zum LPC angesehen und dort ist von Speicher(RAM)-Deskriptoren zu lesen und die sind Erfahrungsgemäß sehr langsam! Ich rate dringend zum Test um spätere Überraschungen zu vermeiden![]()
Lesezeichen