mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Code für DS1302


Autor: Sebastian M. (noobuntu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo @all,

ich bin gerade dabei eine Routine für den DS1302 zu schreiben. Leider 
komme ich nicht weiter.

Mein Compiler bringt mir immer folgende Fehler Meldung:

../ds1302.c:253: error: conflicting types for 'RTC_Read'
../ds1302.c:183: error: previous implicit declaration of 'RTC_Read' was 
here


Für diesen Code
unsigned char data;

data = RTC_Read(0x81);

//Die dazu gehörende Methode

unsigned char RTC_Read(unsigned char cmd){

  unsigned char file;
  
  RTC_CE_High();
  RTC_Write_Byte(cmd);
  file = RTC_Read_Byte();
  RTC_CE_Low();

  return file;
}

Woran liegts? Hat jmd ne Idee? Für Hilfe wäre ich sehr dankbar!

mfg sebastian

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du benutzt die Funktion bevor Du sie deklariert hast!

Autor: Sebastian M. (noobuntu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... schrieb:
> Du benutzt die Funktion bevor Du sie deklariert hast!


Vielen Dank! Du hattes natürlich recht! Blöder Fehler!

Das Empfangen und Sende klappt jetzt einwandfrei. Jetzt geht es an die 
Auswertung der Zeit.

Ich bekomme vom DS1302 ein Char. Die Bits 0 bis 3 stehen für die 
Einerstelle, die Bits 4 bis 6 für die Zehner. Ich benutze folgenden Code 
um das ganze dann auf einem 160x80 Display darzustellen. Zuerst einmal 
nur die Sekunden!

Der Code funktioniert zwar, aber mich stört das ich 2 verschiedene 
Buffer benutzen muss. Da wenn ich immer den gleichen benutze, ich 2 mal 
das selbe auf dem Display sehe.

Habt ihr Verbesserungsvorschläge oder Tipps für mich?

void touch_paintClock(unsigned char xC, unsigned char yC){
  
  unsigned char data;
  unsigned char temp;

  data = RTC_Read(0x81);
  
  temp = data;
  temp = temp >>4;  //10ner Sekunden  

  itoa(temp, BufferSec,10);
  g_draw_string(xC, yC, BufferSec);
  
  temp = data;
  temp &= ~0xF0;  //1ner Sekunden
  
  itoa(temp, BufferSec2,10);
  g_draw_string(xC, yC + 10, BufferSec2);


}

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du 2 Buffer brauchst, dann machst Du irgendwo anders was verkehrt.
Wie sind denn BufferSec/BufferSec2 deklariert?
void touch_paintClock(unsigned char xC, unsigned char yC)
{
  uint8_t data;
  char buffer[2];

  data = RTC_Read(0x81);

  itoa(data >> 4, buffer, 10);
  g_draw_string(xC, yC, buffer);

  itoa(data & 0x0f, buffer, 10);
  g_draw_string(xC, yC + 10, buffer);
}
oder
void touch_paintClock(unsigned char xC, unsigned char yC)
{
  uint8_t data;
  char buffer[3];

  data = RTC_Read(0x81);

  buffer[0] = (data >> 4) + '0';
  buffer[1] = (data & 0x0f) + '0';
  buffer[2] = '\0';
  g_draw_string(xC, yC, buffer);
}
oder
void touch_paintClock(unsigned char xC, unsigned char yC)
{
  uint8_t data;
  char buffer[3];

  data = RTC_Read(0x81);

  itoa(((data >> 4) * 10) + (data & 0x0f), buffer, 10);
  g_draw_string(xC, yC, buffer);
}
oder
void touch_paintClock(unsigned char xC, unsigned char yC)
{
  uint8_t seconds, minutes;
  char buffer[6];

  seconds = RTC_Read(0x81);
  minutes = RTC_Read(0x83);

  sprintf(buffer, "%01d%01d:%01d%01d", minutes >> 4, minutes & 0x0f, seconds >> 4, seconds & 0x0f);
  g_draw_string(xC, yC, buffer);
}

Autor: Sebastian M. (noobuntu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmals vielen Dank für die ausführliche Antwort! Werds morgen gleich 
ausprobieren.

Mit dem BufferSec war das schon ein bisschen komisch. Nach ein paar mal 
Compilieren gings dann!

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.
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.

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