forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Posílání více CAN zpráv za sebou

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM
 
Prochy
Anonymní





PříspěvekZaslal: 01 červenec 2014, 19:58    Předmět: Posílání více CAN zpráv za sebou Citovat

Zdravim,

potřeboval bych mikrokontrolérem zasílat více zpráv (např. 10 a více), tak sem si vytvořil následující kus kódu:

kód:
unsigned short sendIdent[] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15}; //seznam zasílaných identifikátoru
unsigned short sendData[] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15};   //seznam zasílaných dat
unsigned short sendTime[] = {8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8};         //casy jednotlivých zpráv v 100ms
unsigned short sendFlag[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};   //nastavit na nulu
unsigned short countData = 14;   //pocet celkovych zprav



unsigned int time = 0;
/**
  * @brief  Main program
  * @param  None
  * @retval : None
  */
int main(void)
{
   int i=0,j=0;
   int setFlag=0;
   int tempTime = 0;
  /* System Clocks Configuration */
  RCC_Configuration();

  /* NVIC Configuration */
  NVIC_Configuration();
 
  /* GPIO ports pins Configuration */
  GPIO_Configuration();
   InterruptConfig();
   SysTick_Configuration();
      
  while (1)
  {      
      //CAN_Interrupt();
      tempTime=time;
      for(i=0;i<countData;i++){
         if(!(tempTime%sendTime[i]) && sendFlag[i]==0){
            CAN_SendMessage(sendIdent[i],sendData[i]);
            sendFlag[i]=1;
         }
         else if(tempTime%sendTime[i]){
            sendFlag[i]=0;
         }         
      }      
  }


Nazačátku se definují jednotlivé identifikátory a jednotlivé obsahy zpráv a časy kdy se zprávy odesílají. Poté v hlavním kódu mám nastavený Systick, kde počítám čas, který kontroluji ve for cyklusu s mými časy, kdy se mají zprávy odeslat. Zprávy se odešlou, ale v tomto případě pouze prvních 9 zpráv, i když tam je nastaven počet na 13 zpráv. Moc mi to hlava nebere. Pokud vyhodim tempTime a používám normálně všude time, tak to posílá všechny zprávy, jen to občas nestihne a zpráva se neodešle.

Máte někdo nápad, kde by ta chyba mohla být?

Děkuji
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)