Hallo, ich hab dieses Projekt nachgebaut (als Einstieg mit einem LCD Display). http://www.pro-qwerty.com/lcd_clock.php Verwendet wird ein HD44780 kompatibles Display. Ich verwende das TC1602E-01(auch HD44780 kompatibel). Aber es zeigt nichts auf dem Display an außer die erste Zeile alles Pixel. Es wird ein Quarz 8MHZ verwendet. Ich hab nur ein 10MHZ. Es sollte auch ohne gehen. Das zumindest was angezeigt wird. Oder muss am Quellcode was verändert werden?
Ich nehme an, du hast die Zeile: $crystal = 8000000 deiner Quarzfrequenz angepassT?
isnah schrieb: > Ich nehme an, du hast die Zeile: > $crystal = 8000000 > deiner Quarzfrequenz angepassT? Nein das habe ich nicht. Wird höchstwarscheinlich daran liegen. Danke...
Ich verwende jetzt das 4MHZ Quarz und habe die Zeile geändert nach:
$crystal = 4000000
Jetzt muss ja di e Uhr auch anders takten. Also 1024/2=512
$crystal = 4000000
$baud = 19200
Declare Sub Lover_text()
Config Pind.2 = Input
Config Pind.3 = Input
Config Pind.4 = Input
Config Pind.6 = Output
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.6 = 0
Dim A As Integer
Dim Secounds As Byte
Dim Minutes As Byte
Dim Hours As Byte
Let Secounds = 0
Let Minutes = 0
Let Hours = 0
Let A = 0
Config Lcd = 16 * 2
Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ?
with number (0-7)
Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ?
with number (0-7)
Config Timer1 = Timer , Prescale = 1024
On Ovf1 Tim1_isr
Load Timer1 , 7812
Ändere ich jetzt die Zeile
>Config Timer1 = Timer , Prescale = 1024
nach
Config Timer1 = Timer , Prescale = 512
so meldet Bascom den Fehler:
Error 96, Line 33: Prescale value must be 1, 8, 64, 256 or 1024
Also kann ich nur ein 8MHZ, ein 2MHZ usw. verwenden.
Wie kann ich das jetzt umschreiben, sodas ich ein 4MHZ Quarz nehmen
kann.
Ich hätte auch noch ein 10 und 15MHZ Quarz...
Nein im Code passt du die Frequenz an deinen Quarz an. Damit die Sekunde wieder eine Sekunde hat musst du das Vorbesetzen des Timers ändern auf einen Wert der zu deinem Quarz passt. ... Tim1_isr: Load Timer1 , 7812 ...
Ich (auch Anfänger) habe diese Uhr jetzt nachgebaut. Ich finde das ein prima Testprojekt, man kann einiges probieren und lernen. Bei mir läuft es auf Mega 8 mit 9.830400 MHz, das teilt sich günstig mit Timer= 9600, und die Bauds stimmen auch. Ich hätte nur gerne die Anzeige so wie bei einer Uhr üblich, d.h. rechtsbündig und mit Vornull bei Minute und Sekunde. Ich hab schon einiges versucht, aber noch keinen Durchbruch :) Joachim
Ja, das eigentliche Problem ist ja auch, das das Display gar nichts anzeigt... Aber es ist ein HD44780 Standartdisplay...
Also wenn Du garnichts siehst, liegt das nicht an der Quarzfrequenz, damit ändert sich nur die Zeit. Hast Du schon alle Anschlüsse am LCD nachgeprüft? Kannst Du mit dem Kontrastregler von ganz hell bis zu lauter schwarzen Quadraten einstellen? Hast Du Pin5 (R/W) an GND angeschlossen? Mehr fällt mir erstmal nicht ein. Joachim
J. H. schrieb: > Hast Du Pin5 (R/W) an GND angeschlossen? Nein, laut Schaltplan wird Pin 5 nirgends angeschlossen...
Simon R. schrieb: > J. H. schrieb: >> Hast Du Pin5 (R/W) an GND angeschlossen? > > Nein, laut Schaltplan wird Pin 5 nirgends angeschlossen... Okay die Uhr funktioniert jetzt einwandfrei, bis auf das Quarz. Retnuoc schrieb: > Nein im Code passt du die Frequenz an deinen Quarz an. > > Damit die Sekunde wieder eine Sekunde hat musst du das Vorbesetzen des > Timers ändern auf einen Wert der zu deinem Quarz passt. > > ... > Tim1_isr: > Load Timer1 , 7812 > > ... Ich verstehe das nicht ganz. Muss ich die 7812 durch 2 teilen? Ich will ein 4MHZ Quarz nutzen...
@ J.H. Doch die Angabe im Programm: $crystal = 4000000 ist für die Funktion des Display notwendig. Die Function "waitms 200" im Code ist direkt abhängig davon.
Ich habe die Uhr testweise mit Quarzen von 3 bis 20 MHZ betrieben, nach dem ändern des Timer-Startwertes ging es immer ohne Fehler. Die 200ms stellen sich doch durch die Angabe der Frequenz in "$crystal" richtig ein(?). Den Timer-Startwert ermittelt man durch =Quarzfrequenz/Prescalewert(1024). Bloß für mein Problem - die vorlaufenden Nullen - hab ich noch immer keine Lösung. Vielleicht weiß einer was. Ich hab mal meine Version der Uhr angehängt. Joachim
J. H. schrieb: > Den Timer-Startwert ermittelt man durch > =Quarzfrequenz/Prescalewert(1024). Das heißt, wenn ich ein 4MHZ Quarz nutzen will, muss ich einfach die 4000000/1024 machen? Ich hätte dann 3906,25. Ich schreibe also: >$crystal = 4000000 >Load Timer1 , 3906 und bei Zeile 80... Aber was passiert mit den ,25 (3906,25)? Wird die Uhr dann ungenau? Bei 8MHZ wären ja noch ,5 übrig (7812,5)
Also bei einem 4MHz sollte so aussehen : $crystal = 4000000 Config Timer1 = Timer, Prescale = 64 On Timer1 Timer_irq Const Timervorgabe = 3036 Enable Timer1 Enable Interrupts Do Loop Timer_irq: Timer1 = Timervorgabe
Danke... Kein Wunder. Nach meinen Angaben lief die Uhr doppelt so schnell...
Ich hab das jetzt mal so geschrieben: $crystal = 4000000 $baud = 19200 Declare Sub Lover_text() Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.6 = Output Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.6 = 0 Dim A As Integer Dim Secounds As Byte Dim Minutes As Byte Dim Hours As Byte Let Secounds = 0 Let Minutes = 0 Let Hours = 0 Let A = 0 Config Lcd = 16 * 2 Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ? with number (0-7) Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ? with number (0-7) Config Timer1 = Timer , Prescale = 64 On Ovf1 Tim1_isr Load Timer1 , 3036 Setclock: Disable Interrupts Let Secounds = 0 Cls Cursor On Blink Lcd "Time: " Lowerline Lcd "Set Clock!" Locate 1 , 9 Lcd ":" Locate 1 , 12 Lcd "." Do If Pind.3 = 0 Then Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Waitms 200 End If If Pind.2 = 0 Then Hours = Hours + 1 If Hours = 24 Then Hours = 0 Waitms 200 End If If Pind.4 = 0 Then Exit Do Locate 1 , 7 Lcd " " Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd " " Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Waitms 50 Loop Enable Timer1 Enable Interrupts Cursor Off Noblink Call Lover_text() Do Toggle Portd.6 Waitms 100 If Pind.4 = 0 Then Waitms 10 While Pind.4 = 0 Nop Wend Goto Setclock End If Loop Tim1_isr: Load Timer1 , 3036 If Secounds = 60 Then Secounds = 0 Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Locate 1 , 10 Lcd " " Hours = Hours + 1 If Hours = 24 Then Hours = 0 Locate 1 , 7 Lcd " " Call Lover_text() nop nop End If End If End If Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Locate 1 , 16 If A = 0 Then Lcd Chr(0) A = 1 Elseif A = 1 Then Lcd Chr(1) A = 0 End If Secounds = Secounds + 1 Return End Sub Lover_text() Locate 2 , 0 Lcd " Hello Simon " End Sub Die Uhr läuft zehnmahl so schnell...
Hallo Thomas! Wie kommst Du auf diese Zahl? Ich hab das gleich mal ausprobiert, da geht die Post ab! Die Sekunden sind garnicht mehr zu sehen, die Minuten laufen fast im Sekundentakt :) Nach der Formel soll der Timerstartwert 62500 sein. Hab ich reingeschrieben, alles wieder OK! @ Simon: Glatte Quarzfrequenzen geben meistens ungerade Teilerwerte, ich hab in der Kiste einen 9,8304 MHz gefunden, der muß auch in was seriellem drin gewesen sein, wegen der Baudrate. Die Datei mußte ich nochmal überarbeiten, da war ein Fehler drin ;) Deshalb nochmal. Joachim
Ich hab das ja umgesetzt auf ATmega8, muß erstmal auf dem Steckbrett was mit dem Tiny 2313 zusammenstecken...mal sehen!
Thomas der Bastler schrieb: > Fuses passen ? Hatte sie ausversehen auf E4 gestellt. Natürlich E2... Danke euch beiden...
Also die Uhr will bei mir nicht nach dem "echten" Sekundentakt laufen. Der Attiny2313 hat doch ein interner 8MHZ oszillator. Kann man den nicht nehmen?
Simon R. schrieb: > Also die Uhr will bei mir nicht nach dem "echten" Sekundentakt > laufen. > Der Attiny2313 hat doch ein interner 8MHZ oszillator. Kann man den nicht > nehmen? Schon aber ungenauer wie ein Quarz. Was ist das Problem noch ?
Simon R. schrieb: > Kann man den nicht > nehmen? Dann schau dir mal die Abeweichungen im Datenblatt an.
Eumel schrieb: > Dann schau dir mal die Abeweichungen im Datenblatt an. Der interner Osc ist ein RC Glied...wird nie so genau laufen wie ein Quarz
Thomas der Bastler schrieb: > Schon aber ungenauer wie ein Quarz. > Was ist das Problem noch ? Die gebaute Uhr mit 4MHZ Quarz läuft schneller: Stoppuhr= 16:10 Gebaute Uhr= 16:25
Thomas der Bastler schrieb: > Der interner Osc ist ein RC Glied...wird nie so genau laufen wie ein > Quarz Bezug zu meiner Aussage? Null.
Hast die beiden Zeilen auch drin ? Enalbe Timer1 Enable interrupts Zeige mal den Code
Das wäre der Code: ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Made by Szymon Dyja 'from www.pro-qwerty.com '' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $crystal = 4000000 $baud = 19200 Declare Sub Lover_text() Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.6 = Output Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.6 = 0 Dim A As Integer Dim Secounds As Byte Dim Minutes As Byte Dim Hours As Byte Let Secounds = 0 Let Minutes = 0 Let Hours = 0 Let A = 0 Config Lcd = 16 * 2 Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ? with number (0-7) Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ? with number (0-7) Config Timer1 = Timer , Prescale = 64 On Ovf1 Tim1_isr Load Timer1 , 62500 Setclock: Disable Interrupts Let Secounds = 0 Cls Cursor On Blink Lcd "Time: " Lowerline Lcd "Set Clock!" Locate 1 , 9 Lcd ":" Locate 1 , 12 Lcd "." Do If Pind.3 = 0 Then Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Waitms 200 End If If Pind.2 = 0 Then Hours = Hours + 1 If Hours = 24 Then Hours = 0 Waitms 200 End If If Pind.4 = 0 Then Exit Do Locate 1 , 7 Lcd " " Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd " " Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Waitms 50 Loop Enable Timer1 Enable Interrupts Cursor Off Noblink Call Lover_text() Do Toggle Portd.6 Waitms 100 If Pind.4 = 0 Then Waitms 10 While Pind.4 = 0 Nop Wend Goto Setclock End If Loop Tim1_isr: Load Timer1 , 62500 If Secounds = 60 Then Secounds = 0 Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Locate 1 , 10 Lcd " " Hours = Hours + 1 If Hours = 24 Then Hours = 0 Locate 1 , 7 Lcd " " Call Lover_text() nop nop End If End If End If Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Locate 1 , 16 If A = 0 Then Lcd Chr(0) A = 1 Elseif A = 1 Then Lcd Chr(1) A = 0 End If Secounds = Secounds + 1 Return End Sub Lover_text() Locate 2 , 0 Lcd " Hello Simon " End Sub
Wo ist der AVR Definition ? Schreibe mal so : $regfile = "2313def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Timer1 = Timer , Prescale = 64 On Timer1 Tim1_isr do Loop Tim1_isr: Incr Count Timer1 = 3036 Return
Wenn ich also schreibe: ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Made by Szymon Dyja 'from www.pro-qwerty.com '' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $regfile = "2313def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Declare Sub Lover_text() Config Pind.2 = Input Config Pind.3 = Input Config Pind.4 = Input Config Pind.6 = Output Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Portd.6 = 0 Dim A As Integer Dim Secounds As Byte Dim Minutes As Byte Dim Hours As Byte Let Secounds = 0 Let Minutes = 0 Let Hours = 0 Let A = 0 Config Lcd = 16 * 2 Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ? with number (0-7) Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ? with number (0-7) Config Timer1 = Timer , Prescale = 64 On Timer1 Tim1_isr do Loop Tim1_isr: Incr Count Timer1 = 3036 Return Setclock: Disable Interrupts Let Secounds = 0 Cls Cursor On Blink Lcd "Time: " Lowerline Lcd "Set Clock!" Locate 1 , 9 Lcd ":" Locate 1 , 12 Lcd "." Do If Pind.3 = 0 Then Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Waitms 200 End If If Pind.2 = 0 Then Hours = Hours + 1 If Hours = 24 Then Hours = 0 Waitms 200 End If If Pind.4 = 0 Then Exit Do Locate 1 , 7 Lcd " " Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd " " Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Waitms 50 Loop Enable Timer1 Enable Interrupts Cursor Off Noblink Call Lover_text() Do Toggle Portd.6 Waitms 100 If Pind.4 = 0 Then Waitms 10 While Pind.4 = 0 Nop Wend Goto Setclock End If Loop Tim1_isr: Load Timer1 , 3036 If Secounds = 60 Then Secounds = 0 Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Locate 1 , 10 Lcd " " Hours = Hours + 1 If Hours = 24 Then Hours = 0 Locate 1 , 7 Lcd " " Call Lover_text() nop nop End If End If End If Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Locate 1 , 16 If A = 0 Then Lcd Chr(0) A = 1 Elseif A = 1 Then Lcd Chr(1) A = 0 End If Secounds = Secounds + 1 Return End Sub Lover_text() Locate 2 , 0 Lcd " Hello Simon " End Sub Meldet er Fehler siehe Bild......
>Meldet er Fehler siehe Bild......
Dann mach doch diesen Unsinn da weg:
Tim1_isr:
Incr Count
Timer1 = 3036
Return
Was willst du damit? Jetzt hast du Tim1_isr: doppelt im Code.
Schaue mal jetzt..aber bitte nich "aufräumen" Interne Pullups einschalten..usww
Ich habe jetzt geschrieben:
1 | ' * - - * - * * - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2 | 'Made by Szymon Dyja |
3 | 'from www.pro-qwerty.com |
4 | '' * - - * - * * - - - - - - - - - - - - - - - - - - - - - - - - - - |
5 | $regfile = "2313def.dat" |
6 | $crystal = 4000000 |
7 | $baud = 19200 |
8 | $hwstack = 32 |
9 | $swstack = 10 |
10 | $framesize = 40 |
11 | |
12 | |
13 | Declare Sub Lover_text() |
14 | |
15 | Config Pind.2 = Input |
16 | Config Pind.3 = Input |
17 | Config Pind.4 = Input |
18 | Config Pind.6 = Output |
19 | Portd.2 = 1 |
20 | Portd.3 = 1 |
21 | Portd.4 = 1 |
22 | Portd.6 = 0 |
23 | |
24 | Dim A As Integer |
25 | Dim Secounds As Byte |
26 | Dim Minutes As Byte |
27 | Dim Hours As Byte |
28 | Let Secounds = 0 |
29 | Let Minutes = 0 |
30 | Let Hours = 0 |
31 | Let A = 0 |
32 | |
33 | Config Lcd = 16 * 2 |
34 | Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ? with number (0-7) |
35 | Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ? with number (0-7) |
36 | |
37 | Config Timer1 = Timer , Prescale = 64 |
38 | On Timer1 Tim1_isr |
39 | |
40 | do |
41 | |
42 | Loop |
43 | |
44 | |
45 | Setclock: |
46 | Disable Interrupts |
47 | Let Secounds = 0 |
48 | Cls |
49 | |
50 | Cursor On Blink |
51 | |
52 | Lcd "Time: " |
53 | Lowerline |
54 | Lcd "Set Clock!" |
55 | Locate 1 , 9 |
56 | Lcd ":" |
57 | Locate 1 , 12 |
58 | Lcd "." |
59 | |
60 | |
61 | Do |
62 | If Pind.3 = 0 Then |
63 | Minutes = Minutes + 1 |
64 | If Minutes = 60 Then Minutes = 0 |
65 | Waitms 200 |
66 | End If |
67 | If Pind.2 = 0 Then |
68 | Hours = Hours + 1 |
69 | If Hours = 24 Then Hours = 0 |
70 | Waitms 200 |
71 | End If |
72 | If Pind.4 = 0 Then Exit Do |
73 | Locate 1 , 7 |
74 | Lcd " " |
75 | Locate 1 , 7 |
76 | Lcd Hours |
77 | Locate 1 , 10 |
78 | Lcd " " |
79 | Locate 1 , 10 |
80 | Lcd Minutes |
81 | Locate 1 , 13 |
82 | Lcd " " |
83 | Locate 1 , 13 |
84 | Lcd Secounds |
85 | Waitms 50 |
86 | Loop |
87 | |
88 | |
89 | Enable Timer1 |
90 | Enable Interrupts |
91 | |
92 | Cursor Off Noblink |
93 | |
94 | Call Lover_text() |
95 | |
96 | Do |
97 | Toggle Portd.6 |
98 | Waitms 100 |
99 | If Pind.4 = 0 Then |
100 | Waitms 10 |
101 | While Pind.4 = 0 |
102 | Nop |
103 | Wend |
104 | Goto Setclock |
105 | End If |
106 | Loop |
107 | |
108 | Tim1_isr: |
109 | Load Timer1 , 3036 |
110 | |
111 | If Secounds = 60 Then |
112 | Secounds = 0 |
113 | Minutes = Minutes + 1 |
114 | If Minutes = 60 Then |
115 | Minutes = 0 |
116 | Locate 1 , 10 |
117 | Lcd " " |
118 | Hours = Hours + 1 |
119 | If Hours = 24 Then |
120 | Hours = 0 |
121 | Locate 1 , 7 |
122 | Lcd " " |
123 | Call Lover_text() |
124 | nop |
125 | nop |
126 | End If |
127 | End If |
128 | End If |
129 | |
130 | Locate 1 , 7 |
131 | Lcd Hours |
132 | Locate 1 , 10 |
133 | Lcd Minutes |
134 | Locate 1 , 13 |
135 | Lcd " " |
136 | Locate 1 , 13 |
137 | Lcd Secounds |
138 | |
139 | Locate 1 , 16 |
140 | If A = 0 Then |
141 | Lcd Chr(0) |
142 | A = 1 |
143 | Elseif A = 1 Then |
144 | Lcd Chr(1) |
145 | A = 0 |
146 | End If |
147 | Secounds = Secounds + 1 |
148 | Return |
149 | |
150 | End |
151 | |
152 | |
153 | Sub Lover_text() |
154 | Locate 2 , 0 |
155 | Lcd " Hello Simon " |
156 | End Sub |
Das Display zeigt nur ein komisches Zeichen an...
Wo ist denn die Definition im Code, daß Du ein Display hast ? Sehe nirgends...
Thomas der Bastler schrieb: > Wo ist denn die Definition im Code, daß Du ein Display hast ? > > Sehe nirgends... Ich habe jetzt dein Programm genommen. Die Uhr läufz noch schneller sodass ich ich die sekunden nicht mehr sehe. Low Fuse auf E2...
Irgendwas ist noch faul..sollte aber der code stimmen..weiß nicht was ist E2 .. Das was Du vor hast ist zimelich standard..mit Attiny2313 1 sek, Takt erzeugen..erster treffer http://bascom-forum.de/showthread.php?2753-Attiny2313-mit-1-Sec-Timer
Zeig mal ein Foto des Aufbaus. Quarz mit Kondensatoren usw.
Zeitmaschine schrieb: > Zeig mal ein Foto des Aufbaus. Quarz mit Kondensatoren usw. Damit nicht ein so schwerer Geburt wird, auch Dein Code was geflasht hast..
Thomas der Bastler schrieb: > Damit nicht ein so schwerer Geburt wird, auch Dein Code was geflasht > hast. Ich habe deine Code geflasht: >Forum.bas
Nun mal auf die schnelle... In meinem Code, war nur ein GROBE Beispiel, sind die LCD Pins garnicht deklariert gewesen. Bist Sicher, daß Dein Quarz 4 MHz hat ...
Thomas der Bastler schrieb: > Bist Sicher, daß Dein Quarz 4 MHz hat ... Ja es ist das hier: http://such002.reichelt.de/index.html?ACTION=3;ARTICLE=2449;SEARCH=4,0000-HC18 Mit Load Timer 62500 lief sie noch fast normal vo der geschwindigkeit. Ich hab auch noch ein Phillips rumliegen...
Hmmm..stehe momentan echt auf dem Schlauch...Muss mal genau anschauen..komme grade nicht drauf..
Simon R. schrieb: > Ich hab auch noch ein Phillips rumliegen... Ob ich nun das Phillips (4000.000) Quarz oder das Standart Quarz (40000) nutze ist völlig egal. Die Zeit stimmt bei beiden nicht. Sie laäuft immer ein wenig schneller als die "normale" Uhr. Ich hätte noch ein 10, 12, 15 oder ein 27MHZ Quarz zur Auswahl...
Ich habe jetzt das ganze auf dem Steckbrett mit nem Tiny 2313 aufgebaut. Das läuft tadellos mit dem angehängten Programm. Ich habe aber die interne Taktquelle benutzt. Getestet mit 1MHz, 4MHz und 8MHz. Das Programm habe ich etwas "verschlankt", und angehängt. Wenn Du keinen groben Fehler beim Aufbau hast, müßte es auch bei Dir laufen. Ich hatte zunächst Probleme mit dem LCD, weil die Leitungen doch ziemlich lang sind. Probiers aus! Joachim Edit: Deine Quarze sind alle nicht gut, weil sich immer was hinter dem Komma ergibt. Da ist die Abweichung schon absehbar.
@ J. H. Mit deinem Code rennt meine Uhr so langsam wie nie. Die Low Fuse steht auf 0xE2. Also für 4MHZ. Es funktioniert nur mit dem Load Timer 62500, aber jedoch ungenau...
Also hast Du doch nicht alles so gemacht wie ich. Du hast den Prescaler auf 64, dazu gehört der Startwert 62500. Das geht auch, habs eben probiert. Du hast aber jetzt einen sehr hohen Startwert, was Dir die Möglichkeit gibt, sehr fein die genaue Zeit einzustellen. Das müßte (Mit Quarz!) ziemlich genau werden! Ich versuch das mal. Einfach den Startwert etwas erhöhen/vermindern.
Eben getestet: Bei Startwert 65000 (+ 2500) läuft sie pro Minute ca. 4 Sekunden langsamer. Müßte also sehr fein regelbar sein.
Simon R. schrieb: > @ J. H. > Mit deinem Code rennt meine Uhr so langsam wie nie. Die Low Fuse steht > auf 0xE2. Also für 4MHZ. E2 ist interner Oszillator > aber jedoch ungenau... Logisch ist der ungenau. Deswegen benutzt man ja Quarze. http://www.engbedded.com/fusecalc/
Simon R. schrieb: > Ich habe jetzt geschrieben: > ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - > 'Made by Szymon Dyja > 'from www.pro-qwerty.com > '' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > $regfile = "2313def.dat" Was immer das auch für ein Device ist. Das Regfile für einen Tiny 2313 heisst $regfile = "attiny2313.dat"
Karl Heinz Buchegger schrieb: > E2 ist interner Oszillator > >> aber jedoch ungenau... > > Logisch ist der ungenau. Deswegen benutzt man ja Quarze. Okay, das heißt ich muss beim flashen E2 nicht wählen. Aber wieso läuft die Uhr immmer weiter auch wenn ich kein Quarz an den Tiny stecke. Mir kommt es so vor, als ob immer noch der interen Oszillator verwendet wird. Die Uhr müsste doch anhalten...
Simon R. schrieb: > Karl Heinz Buchegger schrieb: >> E2 ist interner Oszillator >> >>> aber jedoch ungenau... >> >> Logisch ist der ungenau. Deswegen benutzt man ja Quarze. > > Okay, das heißt ich muss beim flashen E2 nicht wählen. > Aber wieso läuft die Uhr immmer weiter auch wenn ich kein Quarz an den > Tiny stecke. Mir kommt es so vor, als ob immer noch der interen > Oszillator verwendet wird. Die Uhr müsste doch anhalten... welchen Teil von "E2 ist der interne Oszillator" hast du nicht verstanden? interner Oszillator heißt 'Dein Quarz ist schmückendes Beiwerk, wird aber nicht benutzt'. Und damit kannst du den selbstverständlich abziehen oder anstecken, wie du lustig bist. Nicht benutzt ist nicht benutzt und hat auch keine Auswirkungen.
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.