mikrocontroller.net

Forum: Compiler & IDEs Code in Doxygen einbinden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Mirco G. (mirco432)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi. Ich versuche gerade verzweifelt Code in meiner Dokumentation 
anzeigen zu lassen.

Ich möchte den Code von der Funktion SPI_send einbinden. Wenn ich es mit 
\code und \endcode mache wird mir zwar der Code angezeigt aber bei der 
Funktion SPI_empfangen. Die Funktion send wird auch gar nicht mehr in 
der Dokumentation angezeigt.
/**
  \brief senden von 16 Bit Befehl u. ggf. Daten

   s. S. 56 Bus Protokoll zuerst Befehl dann PEC z. Befehl, danach die Daten und dann Pec zu den Daten 
   SS muss waehrend der gesamten Zeit einer Befehlssequenz low sein also fuer Daten und Befehl => alles in einem Befehl machen.
   Zuerst muss Highbyte dann Lowbyte gesendet werden. s.S. 56
   
   Moegliche Faelle:
   Befehl und Daten senden  direkt hintereinader weg SS muss die ganze zeit 0 sein
   Nur befehl befehl senden
   
   wenn keine Daten gesendet werden diese einfach als 0 uebergeben    => dann wird for schleife unten unterborchen
  \code
   */

void SPI_send(uint16_t Befehl, uint16_t Daten)
{
  char Nachricht[2];
  uint16_t PEC, Senden;
  
  PORT_SPI &= ~(1<<SS);                      // SS auf Low => Kommunikation Starten

  for(uint8_t i = 0; i<2; i++)
  {
    if(i==0) 
    {
      Senden=Befehl;                        //erster Durchlauf Befehl senden
    }
    else
    {
      Senden=Daten;                          //zweiter Durchlauf Nachricht senden
    }
  
  Nachricht[0]=SHORT_H_BYTE(Senden);        //Zerlegen in High und Low Byte
  Nachricht[1]=SHORT_L_BYTE(Senden);
  
  PEC=pec15(Nachricht,2);                      //PEC für die entspechende Nachricht berechnen
  
  SPDR =  Nachricht[0];                        //H_Byte Befehl senden
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
  
  SPDR =  Nachricht[1];                        //L_Byte Befehl senden
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
  
  SPDR =  SHORT_H_BYTE(PEC);                //H_Byte PEC_Befehl senden
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
  
  SPDR =  SHORT_L_BYTE(PEC);                //L_Byte PEC_Befehl senden
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
  
  if (Daten == 0) break;                         //wenn keine Daten gesendet werden sollen => Daten =0 => dann for schleife verlassen ansonsten wieder in Schleife eintreten
  }
  PORT_SPI  |=(1<<SS);
}  
  /** \endcode*/




/**\brief Funktion zum Auslesen eines 16 bit Wertes aus SPI Register

Fuer manche Abfragen muss man IC ein wenig Zeit geeben deswegen die moeglichkeit einen Delay zu uebergeben
*/
uint16_t SPI_empfangen     (uint8_t Anzahl_Bytes)
{
      uint16_t Empfangen=0;
      
      PORT_SPI &= ~(1<<SS);                      //SS auf Low => Kommunikation Starten
     //_delay_us     (5);
      
      for(uint8_t i=0;i<Anzahl_Bytes; i++)
      {
        SPDR =  0;                              //H_Byte Befehl senden
        while(!(SPSR & (1<<SPIF)));
      
      Empfangen |= SPDR;                        //Falsch!!! anders machen
       
       if (i > 0)
       {
          Empfangen =  (Empfangen <<8);
       }
      }
       PORT_SPI  |=(1<<SS);
      return Empfangen;
}

Habe jetzt schon lange gesucht aber bin irgendwie nicht wirklich fündig 
geworden. Manchmal ist das Manual von Doxygen irgendwie ein bisschen 
schwer zu deuten  :D.

Danke

Autor: tictactoe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte gar nicht notwendig sein. In der erzeugten Doku gibt es einen 
Link zum Source-Code aus dem die Doku erzeugt worden ist. Kann aber 
sein, dass man dies im Doxyfile einschalten muss.

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich das richtig, dass du den Quellcode der Funktion inline in 
die Doxygen-Doku integrieren willst, aber nur bei dieser einen Funktion 
und bei den anderen nicht?
Ich dachte, dass \code dazu dient, Code einzubinden, der im 
Doxygen-Kommentar selbst steht. In der Doku kann ich auch keinen Hinweis 
darauf erkennen, dass es möglich wäre, das so zu verwenden, wie du es 
tust.
Es gäbe noch \snippet, vielleicht hilft das.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.