Hallo zusammen,
besitze das myAVR MK2 Board mit folgenden Modulen: myTWI Echtzeituhr und
myAVR LCD. Bin schon länger damit beschäftigt die Uhrzeit auf dem LCD
auszugeben, aber bisher ohne großen Erfolg. Kann irgendwelche komischen
Werte auslesen ... die aber nicht viel Sinn ergeben. Beispielsweise
bekomme ich für die Minuten immer ein festen Wert der sich nie ändert.
Hoffe ihr könnt mir bei meinem Problem weiterhelfen. ;)
MfG Benjamin
Anbei der Quellcode:
1 | #include <stdio.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <stdlib.h>
|
4 |
|
5 | #include "Delay.h"
|
6 | #include "TWI_Master.h"
|
7 | #include "lcd.h"
|
8 |
|
9 | int main (void)
|
10 | {
|
11 | char LCD_Buffer[20];
|
12 | uint8_t Slaveaddress_Time = 104; // entspricht: Slaveadresse: 0xD1
|
13 | char minuten;
|
14 |
|
15 | // LCD Initialisierung
|
16 | _delay_ms(200);
|
17 | lcd_init();
|
18 | lcd_clear();
|
19 | lcd_home();
|
20 |
|
21 | // Wait 1 second for POR (Power on Reset)
|
22 | Delay_ms (1000);
|
23 |
|
24 | if (!TWIM_Init (50000)) // 50 kHz einstellen
|
25 | {
|
26 | // Error in initiating TWI interface
|
27 | while (1);
|
28 | }
|
29 |
|
30 | // Endlosschleife
|
31 | while (1)
|
32 | {
|
33 | TWIM_Start (Slaveaddress_Time, TWIM_WRITE);
|
34 | TWIM_Write (1);
|
35 | TWIM_Stop ();
|
36 | TWIM_Start (Slaveaddress_Time, TWIM_READ);
|
37 | minuten = TWIM_ReadNack();
|
38 | TWIM_Stop ();
|
39 |
|
40 | lcd_home();
|
41 | itoa( minuten , LCD_Buffer, 10 );
|
42 | lcd_write_s( LCD_Buffer);
|
43 | lcd_write_s(" Minuten");
|
44 |
|
45 | Delay_ms (2000);
|
46 | }
|
47 | return 0;
|
48 | }
|