Forum: Compiler & IDEs Code in Doxygen einbinden


von Mirco G. (mirco432)


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.
1
/**
2
  \brief senden von 16 Bit Befehl u. ggf. Daten
3
4
   s. S. 56 Bus Protokoll zuerst Befehl dann PEC z. Befehl, danach die Daten und dann Pec zu den Daten 
5
   SS muss waehrend der gesamten Zeit einer Befehlssequenz low sein also fuer Daten und Befehl => alles in einem Befehl machen.
6
   Zuerst muss Highbyte dann Lowbyte gesendet werden. s.S. 56
7
   
8
   Moegliche Faelle:
9
   Befehl und Daten senden  direkt hintereinader weg SS muss die ganze zeit 0 sein
10
   Nur befehl befehl senden
11
   
12
   wenn keine Daten gesendet werden diese einfach als 0 uebergeben    => dann wird for schleife unten unterborchen
13
  \code
14
   */
15
16
void SPI_send(uint16_t Befehl, uint16_t Daten)
17
{
18
  char Nachricht[2];
19
  uint16_t PEC, Senden;
20
  
21
  PORT_SPI &= ~(1<<SS);                      // SS auf Low => Kommunikation Starten
22
23
  for(uint8_t i = 0; i<2; i++)
24
  {
25
    if(i==0) 
26
    {
27
      Senden=Befehl;                        //erster Durchlauf Befehl senden
28
    }
29
    else
30
    {
31
      Senden=Daten;                          //zweiter Durchlauf Nachricht senden
32
    }
33
  
34
  Nachricht[0]=SHORT_H_BYTE(Senden);        //Zerlegen in High und Low Byte
35
  Nachricht[1]=SHORT_L_BYTE(Senden);
36
  
37
  PEC=pec15(Nachricht,2);                      //PEC für die entspechende Nachricht berechnen
38
  
39
  SPDR =  Nachricht[0];                        //H_Byte Befehl senden
40
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
41
  
42
  SPDR =  Nachricht[1];                        //L_Byte Befehl senden
43
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
44
  
45
  SPDR =  SHORT_H_BYTE(PEC);                //H_Byte PEC_Befehl senden
46
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
47
  
48
  SPDR =  SHORT_L_BYTE(PEC);                //L_Byte PEC_Befehl senden
49
  while(!(SPSR & (1<<SPIF)));                    //Warten bis gesndet wurde
50
  
51
  if (Daten == 0) break;                         //wenn keine Daten gesendet werden sollen => Daten =0 => dann for schleife verlassen ansonsten wieder in Schleife eintreten
52
  }
53
  PORT_SPI  |=(1<<SS);
54
}  
55
  /** \endcode*/
56
57
58
59
60
/**\brief Funktion zum Auslesen eines 16 bit Wertes aus SPI Register
61
62
Fuer manche Abfragen muss man IC ein wenig Zeit geeben deswegen die moeglichkeit einen Delay zu uebergeben
63
*/
64
uint16_t SPI_empfangen     (uint8_t Anzahl_Bytes)
65
{
66
      uint16_t Empfangen=0;
67
      
68
      PORT_SPI &= ~(1<<SS);                      //SS auf Low => Kommunikation Starten
69
     //_delay_us     (5);
70
      
71
      for(uint8_t i=0;i<Anzahl_Bytes; i++)
72
      {
73
        SPDR =  0;                              //H_Byte Befehl senden
74
        while(!(SPSR & (1<<SPIF)));
75
      
76
      Empfangen |= SPDR;                        //Falsch!!! anders machen
77
       
78
       if (i > 0)
79
       {
80
          Empfangen =  (Empfangen <<8);
81
       }
82
      }
83
       PORT_SPI  |=(1<<SS);
84
      return Empfangen;
85
}

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

von tictactoe (Gast)


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.

von Rolf M. (rmagnus)


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
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
Noch kein Account? Hier anmelden.