Guten Tag Ich habe die Uhre der Tuto genohmmen, für die 8515 umgebaut, funktioniere einwandfrei. Dieser Uhr startet leider bei 00, und ich habe angefangen mit 2 Taster die Einstellung zu ermöglichen was aber auch scheinbar ohne Probleme lief. Ich wollte aber ein Weckfunktion einbauen, Die Routines dazu habe ich vorbereitet, der Summer möchte ich später mit ein Timmer erledigen, aber ich kanne in mein Datenblatte nicht finden wie ich die Anzeige der Wecker auf die 2. zeile einbringe. Kann mir jemand zeigen der beste Weg dafür? Danke
Claude B. schrieb: > ich kanne in mein Datenblatte nicht finden In welchem Datenblatt schaust du? Bei den meisten HD44780 kompatiblen Displays beginnt die 2. Zeile an der RAM-Adresse 0x40. Du musst also einfach das Kommando SET DDRAM ADDRESS einfügen: http://mil.ufl.edu/3744/docs/lcdmanual/commands.html#Sda Und auch das Koppeln der Einstell-Taster an das Sekunden-Flag bringt sicher ein ungeahnt holpriges und zähes Bediengefühl....
Vielen Dank Lothar. aber Irgend wie, ich bekommen das nicht ins gang, In die Init routine sind aber 2 Zeilen eingestellte. ich habe ein Texte ausgabe eingefügt, die nur aud die 1. Zeile anzeigt
Claude B. schrieb: > aber Irgend wie, ich bekommen das nicht ins gang, Irgendwie wundert mich das nicht. Hier:
1 | ; Sendet den Befehl: Cursor auf 2-te Zeile |
2 | lcd_Row2: |
3 | ldi temp1, 0xC0 |
4 | rcall lcd_command |
5 | rcall delay5ms |
6 | ret
|
Vielendank, ich Probiere Marc V. schrieb: > ; Sendet den Befehl: Cursor auf 2-te Zeile > lcd_Row2: > ldi temp1, 0xC0 > rcall lcd_command > rcall delay5ms > ret Viellen Dank und es Funktioniert, ich hatte die delay nicht ein gefügt. Aber jetzt, ich habe ein Zeile (Vorbereitung) eingefügt, auf die 2.Zeile, ich möchte mein name einfügen, und zur Zeit ich bekomme auf die 1. Zeile ( Vorberitung) und auf die 2., Wieder ( Vorbereitung) wie bekomme ich das in?
Claude B. schrieb: > 1. Zeile ( Vorberitung) und auf die 2., Wieder ( Vorbereitung) wie > bekomme ich das in? Hier:
1 | ;----------------------------------------------------- |
2 | weiter1: rcall lcd_clear ; das LCD löschen |
3 | |
4 | ;************************************************************************ |
5 | ldi temp1, 0xC0 |
6 | rcall lcd_command |
7 | rcall delay5ms |
8 | ldi ZL, LOW(text2*2) |
9 | ldi ZH, High(text2*2) |
10 | rcall lcd_flash_string |
11 | ldi temp1, 0x80 |
12 | rcall lcd_command |
13 | rcall delay5ms |
14 | ;************************************************************************ |
15 | |
16 | mov temp1, Stunden ; und die Stunden ausgeben |
17 | rcall lcd_number |
18 | ldi temp1, ':' ; zwischen Stunden und Minuten einen ':' |
19 | rcall lcd_data |
20 | mov temp1, Minuten ; dann die Minuten ausgeben |
Danke Mark für Dein Antwort, es funktioniert. das bedeutet, dass wenn ich noch Irrgenwo in den Programm ein 2. Zeile einbringen möchte, ich muss diese Procedure folgen. Was bedeutet die 0x80? Vielen Danke
Hi >Was bedeutet die 0x80? Befehl zum Setzen der DDRAM-Adresse: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Set DDRAM 0 0 1 ADD ADD ADD ADD ADD ADD ADD address MfG Spess
Claude B. schrieb: > das bedeutet, dass wenn ich noch Irrgenwo in den Programm ein 2. Zeile > einbringen möchte, ich muss diese Procedure folgen. Nein.
1 | ldi temp2, 2 ;* Cursor auf Zeile 2, Anfang |
2 | rcall SetLcdRow |
3 | ldi ZL, LOW(text*2) |
4 | ldi ZH, High(text*2) |
5 | rcall lcd_flash_string ;* " Vorbereitung " ausgeben |
6 | |
7 | ldi temp2, 1 ;* Cursor auf Zeile 1, Anfang |
8 | rcall SetLcdRow |
9 | ldi ZL, LOW(text2*2) |
10 | ldi ZH, High(text2*2) |
11 | rcall lcd_flash_string ;* " Claude Bochard " ausgeben |
12 | ret
|
13 | |
14 | ; Sendet den Befehl: Cursor auf Zeile in temp2 |
15 | SetLcdRow: |
16 | ldi temp1, 0x80 |
17 | cpi temp2, 1 |
18 | breq slr_0 |
19 | ldi temp1, 0xC0 |
20 | slr_0: |
21 | rcall lcd_command |
22 | rjmp delay5ms |
Claude B. schrieb: > Was bedeutet die 0x80? Lothar M. schrieb: > Bei den meisten HD44780 kompatiblen Displays beginnt die 2. Zeile an der > RAM-Adresse 0x40. Demzufolge ist: 0x80 = RAM Adresse für Zeile 1 + Kommando SET DDRAM ADDRESS. 0xC0 = RAM Adresse für Zeile 2 + Kommando SET DDRAM ADDRESS
Vielen Dank Marc für dieser Ausfühliche Antworte, Ich werde Gleich probieren
Ich komme wieder auf meiner klein Uhr, die nicht richtig tickt, wie kanne ich diese Einstellen, und wie kann ich die sekunden einstellen, gibt es ein Trick? Danke
Claude B. schrieb: > Ich komme wieder auf meiner klein Uhr, die nicht richtig tickt, wie > kanne ich diese Einstellen Die Uhr läuft falsch? -> https://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC Wenn du die Sekunden einstellen willst, brauchst du keinen Trick, sondern eine Taste, die die Sekunden heraufzählt.
Nils S. schrieb: > Wenn du die Sekunden einstellen willst, brauchst du keinen Trick, > sondern eine Taste, die die Sekunden heraufzählt. Was ich aber gemacht habe, 1.Probleme die Uhr läuft langsmer 2. Die Sekunden Steigen in 1 Sekundentackt, was mein Uhr damit nicht eingestell werden kann Danke für die Link, ich werde versuchen
Taster mit Timer Interrupt von ca. 20mS auslesen.
1 | timer_isr() { |
2 | if(button_secondsup) { |
3 | seconds++; |
4 | if(seconds == 60) { |
5 | minutes++; |
6 | seconds = 0; |
7 | }
|
8 | ...
|
9 | }
|
10 | }
|
Marc V. schrieb: > Um wieviel langsamer ? Um die Heft,ungefähr, nicht gemessen und auskommentiert aber wie schon gesagt, die sekunden Steigen von 1 pro sekunde, was mir gar nicht nütze Nils S. schrieb: > Taster mit Timer Interrupt von ca. 20mS auslesen. Also ei 2. Timer benutzen? und dann in der Sekunden_up runtine als Timer(2) routine?? sekunden_up: inc Sekunden cpi Sekunden, 60 brne return clr Sekunden Ret (oder iret) kein Berücksichtigung der Minuten
:
Bearbeitet durch User
Nils S. schrieb: > Die Uhr läuft falsch? > -> > https://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC Ich habe dieser angesehen, um dieser zu Bauen leider muss mein Programm ganz neue geschrieben werden, Ich bin aber auch nicht in der Lage das zu tun, Vielen dank
Claude B. schrieb: > Marc V. schrieb: >> Um wieviel langsamer ? > > Um die Heft,ungefähr, nicht gemessen und auskommentiert aber wie schon Dann läuft deine Mega mit 2MHz, oder ?
Für die Nils S. schrieb: > Die Uhr läuft falsch? exakt, ich habe auch nur 2MHz eingestellt. noch dazu das Programm umgestellt mit CTC-mode, für die Einstellung, bis Morgen warten Danke
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.