Bascom BASCOM ; Erste Schritte zum Ausprobieren

Quick&dirty: Du könntest auch einfach ein paar Leerzeichen hinten anfügen im Lcd Befehl, um zu überschreiben.
Oder halt mit Format.

Aber die If erschließt sich mir nicht. Warum überhaupt und warum bei 29?
Die zu treffen ist recht unwahrscheinlich.
 
Na ja, If... weil bis irgendwo hin gezählt werden soll. Die 29 kann auch 299 sein, wenn Dim As Word. Habe ich doch geschrieben, unbestimmte Zahl.
 
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.
 
Hi,

sowas kann m an zB so auf dem LCD ausgeben (Ausschnitt aus einem meiner Programme) ...

Vbatstr = Fusing(vbat , "#.##") ' Single-Wert formatieren
Locate 1 , 1
Lcd Vbatstr ' Spannung anzeigen

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.

Gruß
Dino
 
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.
 
Hi,

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.

Gruß
Dino
 
Das Thread von Cassio würde mich mal interessieren. Ich habe hier nur das Handy zur Verfügung. Kannst du mir diesen Thread verlinken, wenn das geht.
 
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:
und

Letztere gibt es auf ebay aus Fernost aber bedeutend preiswerter. Beim Breadboard würde ich nicht sparen.
 
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.
 
Aso. Naja, von dieser Art Platinen halte ich nicht viel, kenne daher auch keine.
 
Ich meinte eine Platine mit Dip sockel für Atmega8 und Tiny.
Sowas?

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?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)