Code in Doxygen einbinden

OP #5864798
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
#5866662
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.