Kann mir wer erklären wie man da ausrechnet das nach dem Tasterdruck,Portb.1 eine Stunde auf High schaltet?
kopfkratz Nimm halt einen Timer und rechne Dir aus welcher Wert bei 1.2MHz Takt eine Stunde entspricht ...
Ziemlich komischer Code. Für was brauchst du ein entprellen, wenn ein Tastendruck eh eine 1 Stündige arbeit verrichtet? Einfach: If taste gedrückt set portb.1 = 1 wait 3600 set portb.1 = 0 goto start Die befehle, und wie alles zusammen gehört, findest du sicherlich selbst raus.
wie kommst du auf 1 Stunde. Rein rechnerisch sind es 100 Minuten. Vorausgesetzt die Taktfrequenz von 1.2Mhz stimmt mit der Realität überein.
Was denn? :D Hab ich was falsch verstanden? Er möchte, nachdem er eine Taste gedrückt hat, das ein ausgang für eine Stunde auf High geschalten wird? Dann ist das doch richtig? Ausser er möchte dabei noch was anderes machen. Aber das hat er ja nicht gesagt. Edit: Meinst du mich?
:
Bearbeitet durch User
wenn ein DEBOUNCE
1 | Config Debounce = 30 'Zeit der Kontaktentprellung in ms |
30 Millisekunden dauert, wie lange dauern dann
1 | For B = 1 To 2000 |
2 | ....
|
3 | Debounce Pinb.0 , 0 , Main 'Wenn Taste |
4 | ...
|
5 | NEXT B |
2000 Stück davon? Wenn einmal abarbeiten dieser 2000 Stück x Zeiteinheiten benötigt, wie lange dauert es dann, bis
1 | For A = 1 To 2000 'Zeitschleife |
2 | ...
|
3 | If A = 100 Then Goto Main ''Main' wenn A |
4 | ...
|
5 | Next A |
100 Stück dieser 2000-er Einheiten abgearbeitet sind?
:
Bearbeitet durch User
Wasss??? Ich möchte einen Taster drücken. Es soll der Ausgang auf High schalten. Nach einer Stunde oder wenn man inzwischen den Taster nochmal drückt ,soll er wieder zurückkehren in den Ausgangszustand. Später wird der Taster wieder gedrückt.
Dann mach: start: do If taster gedrückt goto tastergedrückt loop tastergedrückt: set portb.1 = 1 For A = 1 To 7200 waitms 500 if taster gedrückt goto stop NEXT A stop: set portb.1 = 0 goto start END tadaa... Musst halt, wenn du stoppen willst, den Taster dann eventuell 500ms gedrückt halten. Aber is ja auch ned schlimm.
Daniel J. schrieb: > Aber is ja auch ned schlimm. Doch, isses. Dein Stil ist sogar noch schlechter als der von TdB.
Begründung? Meine lösung funktioniert wenigstens. Ausserdem hast du noch keine Lösung vorgeschlagen.
:
Bearbeitet durch User
Daniel J. schrieb: > start: > > do > If taster gedrückt goto tastergedrückt > loop........... meinst du so??? $regfile = "attiny13.dat" 'verwendeter Prozessor $crystal = 1200000 'Definition des Takt $hwstack = 15 'Reservierung im SRAM $swstack = 15 $framesize = 15 Config Portb.0 = Output ''Buzzer Config Pinb.1 = Input Dim A As Integer start: do If Pinb.1 = 0 Then Goto Tastergedrückt loop tastergedrückt: Portb.1 = 1 For A = 1 To 6200 Waitms 500 If Pinb.1 = 0 Then Goto Stopp Next A Stopp: Portb.1 = 0 goto start END
Ja genau. Nur anstelle von tastergedrückt: Portb.1 = 1 musst du Portb.0 = 0 da das ja der Output ist. Bei "stopp" dann auch portb.0 und For A = 1 To 6200 wird zu For A = 1 To 7200 Da jede schleife circa 500ms dauert und eine Stunde 3600 Sekunden hat. Also pro sekunde 2 Schleifen = 7200. Ausserdem fehlt noch der Pullup Vor Start: kommt ein "Portb.1 = 1" der ist dafür da, dass wenn der Taster nicht gedrückt ist, dieser eingang dann immer eine "1" hat. Da jede schleife circa 500ms dauert und eine Stunde 3600 Sekunden hat. Also pro sekunde 2 Schleifen = 7200. So hätte ich das gemacht. Andere würde eventuell mit dem Timer arbeiten usw. Aber so funktioniert das auch. Natürlich nur wenn der Controller nichts anderes mehr innerhalb der Stunde mache muss.
So hier die eigentlich fertige Datei. Habe noch ein wenig verändert, kannst dirs ja ankucken. Sollte eigentlich jetzt das machen was du willst. Genau eine Stunde wirds damit zwar nicht gehen, dafür benötigst du sicherlich einen externen Quarz usw, aber sollte annähernd ne Stunde sein.
Daniel J. schrieb: > Andere würde eventuell mit dem Timer arbeiten Ja sicher doch. Obwohl der interne RC-Oszillator des Tiny13(A) ganz schönen Exemplarstreuungen unterliegt, was ihn für genaues Timing recht unbrauchbar macht. Der "Auftraggeber" hatte ganz schön damit zu tun, das Programm auf mehrere Exemplare abzugleichen. Der Feinabgleich erfolgte aus Gründen der Bequemlichkeit mit der Konstante "Stusek". Das Programm im Anhang ist zwar für einen etwas anderen Zweck, zeigt aber, wie man an die Sache herangehen könnte. Es schaltet einstellbare Tage und Stunden nach dem Aktivieren einen Verbraucher für eine einstellbare Anzahl Stunden ein und geht nach dem Ausschalten des Verbrauchers in den Tiefschlaf. ...
Daniel J. schrieb: > Genau eine Stunde wirds damit > zwar nicht gehen, dafür benötigst du sicherlich einen externen Quarz Danke Daniel!! Hast da zufällig was im Angebot? :) Ein Timer wäre schon recht,da das schon ziemlich genau und zuverlässig sein sollte. Hannes Lux schrieb: > Ja sicher doch. Obwohl der interne RC-Oszillator des Tiny13(A) ganz > sch.... Danke auch an Hannes!! Das hab ich schon mal wo gesehen und auch getestet.Hab bis heute keine Anwendung dafür gefunden.
Tommy Tomatronic schrieb: > Daniel J. schrieb: >> Genau eine Stunde wirds damit >> zwar nicht gehen, dafür benötigst du sicherlich einen externen Quarz > > Danke Daniel!! > Hast da zufällig was im Angebot? :) Der Tiny13 und Tiny13A ist nicht für Betrieb mit externem Quarz geeignet. Neben den Varianten des internen RC-Oszillators gibt es nur die Möglichkeit, mit einem externen Takt zu arbeiten. Wenn dies ein Quarztakt sein soll, dann ist ein externer Quarzgenerator notwendig. Ein Quarz alleine, wie bei anderen AVRs üblich, reicht dazu nicht. Siehe Datenblatt, Kapitel 6. "System Clock and Clock Options". ...
kopfkratz Man könnte auch einen Tiny85 statt des Tiny13 nehmen und hat mehr Timer und weniger Abgleichsprobleme ... Es fehlen halt wieder die notwendigen Daten, wie genau muß die Stunde sein, was soll geschaltet werden usw. usf. Mit Quarzoszillator wird's genauso "teuer" wie mit Tiny85 nur das man dann noch mehr Platz braucht ...
kopfkratzer schrieb: > Mit Quarzoszillator wird's genauso "teuer" wie mit Tiny85 nur das man > dann noch mehr Platz braucht ... Eher noch teurer... Allerdings sollte man bedenken, dass der Quarz dann wieder zwei der 5 I/O-Pins des Tiny25/85 blockiert. ...
Hannes Lux schrieb: > kopfkratzer schrieb: >> Mit Quarzoszillator wird's genauso "teuer" wie mit Tiny85 nur das man >> dann noch mehr Platz braucht ... > > Eher noch teurer... > Allerdings sollte man bedenken, dass der Quarz dann wieder zwei der 5 > I/O-Pins des Tiny25/85 blockiert. > > ... Nein ist ja ein Oszillator ;-) Und ich meinte Tiny13+Oszillator oder abgeglichener Tiny85 der geht recht genau im vergleich zum Tiny13.
Also du kannst mein Code verwenden. Willst du nun einen schon vorhandenen Attiny verwenden, oder bist du da noch flexibel? Der Attiny85 wäre z.B. mit einem Quarz zu betreiben. Dazu einfach den Attiny so fusen, das er mit einem externen Quarz arbeitet und in Bascom angeben wie schnell er ist. Dann bleibt der Code unverändert ;)
Ich hätte noch einen ATtiny 45 zur Hand. Auch einige Quarz hab ich. Ich hätte da schon gerne einen Timer drin. Die reaktionszeit vom Taster soll ja auch gleich bleiben. In der Stunde kann er ruig einige Sekunden falsch laufen da brauch ich keinen Quarz, aber es soll immer fast gleich laufen. Ich hab nur einen eingang und einen ausgang.
Tommy Tomatronic schrieb: > Ich hätte noch einen ATtiny 45 zur Hand. Auch einige Quarz hab > ich. Ich > hätte da schon gerne einen Timer drin. Die reaktionszeit vom Taster soll > ja auch gleich bleiben. > In der Stunde kann er ruig einige Sekunden falsch laufen da brauch ich > keinen Quarz, aber es soll immer fast gleich laufen. > Ich hab nur einen eingang und einen ausgang. Dann nimm den Tiny45 mit einem passenden Quarz und Du hast es auf die Sekunde genau. Oder Du schaust mal wie gut Du in BASCOM die interne Kalibrierung hinbekommst. Wenn es in der Stunde auf 10 Sekunden nicht ankommt und nur der Taster korrekt entprellt werden soll reicht das aus.
Dann ändere die 7200 in 14400 und die waitms 500 in waitms 250 Dann gibst du oben an, welchen Quarz du angeschlossen hast, und das wars.
Daniel J. schrieb: > Dann ändere die 7200 in 14400 und die waitms 500 in waitms 250 > Dann gibst du oben an, welchen Quarz du angeschlossen hast, und das > wars. Danke! Hi!! Hab da jetzt ein Uhrprogramm genommen,habs umgestrickt für ATiny13 und ATtiny 45. Läuft seit ein paar Tagen ohne Problem. :)
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.