Bonjour,
Je travaille avec le microprocesseur Atmel SAM3X8E et le logiciel Atmel 7.
Je souhaite établir une communication Ethernet (TCP/IP) de mon PC vers ma carte de programmation. Pour la carte de programmation, la réception des données doit tourner grâce à une tâche de freeRTOS. Mon ordinateur doit envoyer les données.
Sans la tâche, la réception des données fonctionne bien mais lorsque je mets la partie réception dans une tâche de FreeRTOS, après 1 réception mon programme bloque dans un handler d'IRQ inutilisées…
Cet handler d'IRQs est utilisé pour tous mes handler :Code:** * \brief Default interrupt handler for unused IRQs. */ void Dummy_Handler(void) { while (1) { } }
Après 1 envoi, les IRQs de mon EMAC (ethernet) passent bien (j'ai vérifié avec quelques print). Je ne sais pas comment mais mon programme va toujours dans ce handler infini. Pourtant j'ai bien initialisé mes interruptions et les 2 fonctionnalités (réception de data par Ethernet et les taches FreeRTOS) fonctionnent très bien tout seul.Code:void EMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); void USART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); void PIOA_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); void PIOB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); ...
Je pense que c'est un problème de conflit entre les IRQ de FreeRTOS et les IRQ d'emac mais je ne suis pas sûr.
Avez vous une idée de comment régler ce problème ?
-----