Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Ja, aber die wird ja nur selten bis nie ausgeführt. Nur wenn der Timer1 rein zufällig mal grade zum Sekunden Interrupt 29 gezählt hat, sonst nicht. Also nur bei 29Hz. Sonst ist da noch was falsch.
Im Prinzip war das auch nur ein Test für die Ausgabe auf dem LCD. Habe dann einfach nur mal die Herz Ausgabe anzeigen lassen wollen. Wenn ich aber da schon anfange Fehler zu machen, na dann...Prost Mahlzeit.
Ab jetzt bzw. schon seit heute Mittag, kann ich keine Experimente durchführen. Flieger geht in einer Stunde.
Von der Verarbeitungsgeschwindigkeit ist es schneller, wenn man zB auf eine Stelle des LCDs erst einige Leerzeichen zum löschen schreibt und dann den entsprechenden Wert. CLS ist so ziemlich das langsamste um das LCD an einer bestimmten Stelle zu löschen.
Man kann zB auch den Zahlenwert in einen String umwandeln lassen, den man dann hinten mit mehreren Leerzeichen verlängert. Danach kappt man dann mit LeftStr den zu langen String hinten auf die gewünschte Länge. Das wäre dann eine linksbündige Anzeige. Das ganze kann man aber auch mir Leerzeichen am Anfang und mit RightStr machen. Das wäre dann Rechtsbündig.
Grundsätzliches: Nur dann auf dem LCD was anzeigen, wenn sich ein Wert auch wirklich geändert hat. Notfalls den Wert vor der Ausgabe mit einem alten gespeicherten vergleichen um zu entscheiden ob sich was geändert hat. Das ist um Längen schneller als eine LCD-Ausgabe. Wenn man zeitkritische Programme schreibt, dann wird man um solche Klimmzüge nicht mehr herum kommen.
Danke @dino03
Das muss ich tatsächlich mal ausprobieren, nach dem Urlaub.
Kannst du mir eventuell auch erklären, warum mein LCD I2C bei Bascom nichts anzeigt, obwohl es bei Arduino funktioniert. In meinem vorigen Versuch gab es auch ein Problem -> Inilcd war die Lösung.
evtl sind am I2C-PortIC die Pins des LCD anders angeschlossen. Es gibt für Bascom glaube ich zwei oder mehr verschiedene Treiberbibliotheken.
Der I2C-Bus vom vom Atmel landet ja beim Display auf nem "normalen" I2C-8Bit-Portbaustein. An dem ist dann das normale Display angeschlossen.
Die Verbindung der Displaypins mit den entsprechenden IO-Pins des I2C-Portbausteins ist das entscheidende. Notfalls mal beim Treiber nachsehen ob man da umdefinieren kann oder ob man am Display umverdrahten kann, damit es zum Treiber paßt.
Da hat Cassio vor einiger Zeit mal nen ganzen Thread drüber geschrieben.
Ich würde dir erst mal von dem Display eher abraten (zumindest am AVR).
Du hast gute Fortschritte beim Laufen lernen gemacht, jetzt mach nicht gleich die Führerscheinprüfung
Bei den I2C Displays hast du so viele potentielle Fehlerquellen, von vergessenen oder falschen PullUp Widerständen über falsche Adressvergabe, dann vielleicht noch die falsche Lib, ...
Ich möchte nicht sagen dass ich dir das nicht zutraue, und wir helfen gerne. Aber lass das Fundament erst mal aushärten, ok?
Du hast recht TommyB.
Ich habe im Prinzip alles Schritt für Schritt gemacht, was Ihr mir beigebracht habt. Ich merke ja selbst, dass ich bei Anwendungen, die sich wiederholen immer noch zurück blättern muss. Es wäre sinnvoll dieses gelernte mit anderen Beispielen zu wiederholen. Ich muss das ganze wirklich ernst einmal festigen. Hast Du eventuell noch ein Übungsbeispiel, dass wir durch gehen könnten (ohne Hardware).
Andere Frage zum festigen und begreifen. In #139 habe ich gelernt, die Grüne LED auf Timer1 über das TIFR einzustellen. Gibt es für Timer0 und / oder Timer2 auch derartige Möglichkeiten. Denn das ist das, was nur für die eine Anwendung gelernt habe und es nicht weiter benutzen kann.
Genieß doch erst mal deinen Urlaub
Beispiele hab ich jetzt so nicht, müsste ich mir welche ausdenken. Mach ich aber mal.
Ja, gibt es, ist aber unnötig. TIFR (=Timer/Counter Interrupt Flag Register) ist ein Byte was alle Timer nutzen. Ist darin ein gewisses Bit gesetzt ist etwas passiert, wie z. B. ein Überlauf des Timers. Das kann man entweder "von Hand" abfragen, oder so wie wir es jetzt machen per Interrupt nutzen, was der elegantere Weg ist. Per Interrupt brauchst du dich um das Byte nicht kümmern, weil der Controller ja seine Arbeit unterbricht und in die ISR springt. Quasi das was du früher mit Polling gemacht hast. So oft wie möglich den Zustand abgefragt und dann etwas ausgeführt.
Wobei, ein Beispiel fällt mir doch noch ein. Das hatte mal ein Ex Kollege bei mir versucht. Er wusste nur noch nicht dass ich programmieren kann ^^
Benötigt:
* 3 LEDs (+Vorwiderstand). Idealerweise Rot, Gelb, Grün, ist aber nicht wichtig.
* ATtiny/ATmega, welcher ist egal, sofern 3 Pins frei sind, besser 4.
* Später vielleicht noch ein Taster.
Aufgabe:
Simulation einer Ampelschaltung (nur eine Seite). Also Rot- Gelb- und Grünphase.
Da gehst du noch mal IO Ports und den Timer durch. Hatten wir ja alles schon.
Ich denke mal, dass es ohne dem “wait Befehl“ ablaufen soll. Denn das wäre auch für mich kein Problem. Okay, dann kann ich mir ein paar Gedanken machen. Später muss ich mir auch noch etwas einfallen lassen, für ein neues Experimentier Board, damit der ganze Kabelsalat aufhört (Selbstbau).
Den Urlaub genieße ich auch so. Ab und zu muss / will ich auch hier etwas machen.
Richtig. Wait ist böse
Und naja, ich kenn deinen aktuellen Selbstbau ja nicht. Aber zum rum experimentieren nutz ich ganz normale BreadBoards und Steckkabel. Wie:
Diese Art von Board habe ich nicht gemeint. Ich meinte eine Platine mit Dip sockel für Atmega8 und Tiny. ISP Anschluss, wechselbaren Quarz usw, eventuell auch gleich eine LCD Verkabelung auf der Platine.
Dafür hab ich hier sogar 'n Tool in den Ressourcen. Und Dino besitzt einige Extension-Boards dafür.
(und ich werkel seit geraumer Zeit an einer eigenen Erweiterungsplatine (quasi für alle kompatiblen Controller...))
“Sowas?“ ist ein wenig zu teuer und auch direkt für alle AVR's gedacht, aber dafür hat es leider keinen USB Anschluss. Ich habe daran gedacht, eines selbst zu bauen. Problem Avcc : wurde an meinem Atmega8 Board bemängelt, da er direkt mit Vcc verbunden ist. Aber diese Avcc kommt doch an +5 Vcc. Warum kann es dann nicht gleich verbunden werden?
Dann möchte ich gleich ein paar LED's mit Vorwiderstand darauf haben. LED mit 20mA = 150 Ohm. Warum lese ich immer wieder etwas von 1K Widerständen?
Ja und dann möchte ich auch gleich nen Taster und eine Steckverbindung für ein LCD. @LotadaC gibt es dafür eine einfache Lösung?
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach einem Login angemeldet zu halten, wenn du registriert bist.
Durch die weitere Nutzung unserer Webseite erklärst du dich damit einverstanden.