Probleme mit Code für DS1302

OP #1618407
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
1
unsigned char data;
2

3
data = RTC_Read(0x81);
4

5
//Die dazu gehörende Methode
6

7
unsigned char RTC_Read(unsigned char cmd){
8

9
  unsigned char file;
10
  
11
  RTC_CE_High();
12
  RTC_Write_Byte(cmd);
13
  file = RTC_Read_Byte();
14
  RTC_CE_Low();
15

16
  return file;
17
}

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

mfg sebastian
OP #1619898
... 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?

1
void touch_paintClock(unsigned char xC, unsigned char yC){
2
  
3
  unsigned char data;
4
  unsigned char temp;
5

6
  data = RTC_Read(0x81);
7
  
8
  temp = data;
9
  temp = temp >>4;  //10ner Sekunden  
10

11
  itoa(temp, BufferSec,10);
12
  g_draw_string(xC, yC, BufferSec);
13
  
14
  temp = data;
15
  temp &= ~0xF0;  //1ner Sekunden
16
  
17
  itoa(temp, BufferSec2,10);
18
  g_draw_string(xC, yC + 10, BufferSec2);
19

20

21
}
Gast #1620195
Wenn Du 2 Buffer brauchst, dann machst Du irgendwo anders was verkehrt.
Wie sind denn BufferSec/BufferSec2 deklariert?
1
void touch_paintClock(unsigned char xC, unsigned char yC)
2
{
3
  uint8_t data;
4
  char buffer[2];
5

6
  data = RTC_Read(0x81);
7

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

11
  itoa(data & 0x0f, buffer, 10);
12
  g_draw_string(xC, yC + 10, buffer);
13
}
oder
1
void touch_paintClock(unsigned char xC, unsigned char yC)
2
{
3
  uint8_t data;
4
  char buffer[3];
5

6
  data = RTC_Read(0x81);
7

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

6
  data = RTC_Read(0x81);
7

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

6
  seconds = RTC_Read(0x81);
7
  minutes = RTC_Read(0x83);
8

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.