Hallo an alle, ich versuche eine Software zu programmieren, die folgendes schafft. Readout at 3 slave devices on one I2C @100 (14byte + 6byte + 6byte) Receive on USART a datastream at 1Hz (stream Duration 200ms) Do some processing. Send out data over USB (CDC) out at 10Hz. (ca. 10byte) This should happen in real time. Unerfreulicherweise blockieren sich USB und USART gegenseitig, sodass es mir bisher nur gelang I2C und USART oder I2C und USB zu betreiben aber nicht alle drei Schnittstellen. Aus diesem Grund die folgenden Fragen: - Ist es überhaupt möglich USART und USB parallel zu betreiben, bzw. macht dies Sinn, da ja beide Schnittstellen relativ hohe Datenraten ermöglichen. Ist dies vielleicht parallel zu viel, sodass dies nicht gescheduled werden kann. - Ich habe bereits in betracht gezogen die DMA für I2C und USART zu nutzen, allerdings macht dies keinen Sinn. Hat jemand Erfahrung mit derartigen Use Cases? Ist es möglicherweise nötig einen DUAL CORE Prozessor zu nutzen? Grüße Ron
Ronald schrieb: > Unerfreulicherweise blockieren sich USB und USART gegenseitig, sodass es > mir bisher nur gelang I2C und USART oder I2C und USB zu betreiben aber > nicht alle drei Schnittstellen. Inwiefern blockieren die sich? Erklär das mal bitte genauer. Es kann sein, dass die internen Busse nicht schnell genug sind, aber selbst dann würde das System funktionieren - nur eben zu langsam. Daher vermute ich erstmal ins Blaue, dass dein Code schuld ist. Ist der Chip selbst schuld, sollte das in Datenblatt oder Errata stehen.
Ronald schrieb: > Hat jemand Erfahrung mit derartigen Use Cases? Ist es möglicherweise > nötig einen DUAL CORE Prozessor zu nutzen? Das riecht ein bischen nach einem Problem, bei dem ein RTOS helfen könnte. Damit hast Du mehrere Threads, die dann entsprechend priorisiert werden können. Wenn gerade kein Byte vom UART kommt, legt sich der UART-Thread schlafen und USB, I2C etc. kommen zum Zug. Ich verwende für sowas gerne ChibiOS http://www.chibios.org/dokuwiki/doku.php Die beste Einführung dafür dürfte das hier sein: http://www.chibios.org/dokuwiki/doku.php?id=chibios:book:start Nachteil bei Dir dürfte sein, daß das integrierte ChibiOS-HAL noch keine Unterstützung für die Peripherie Deines ATSAMD21 hat. Der Cortex-M0-Kern ist aber unterstützt.
Ronald schrieb: > Unerfreulicherweise blockieren sich USB und USART gegenseitig, Wieso? Notwendig ist das jedenfalls nicht. Ronald schrieb: > Hat jemand Erfahrung mit derartigen Use Cases? Mache ich hier auf einem LPC1768 bei so ~29,5 MHz, und der wäre da noch nicht ernsthaft ausgelastet.
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.