Forum: Projekte & Code [ASM] BME280 mit OLed Display mit ATmega808


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Eine kleine Spielerei von mir wobei sehr viele einzelne 
Biblioteken/Includes von mir entstanden sind. Alles in AVR-Assembler.

Was mir Aufgefallen ist, der ATmega808 der ersten Generation hat enorme 
Fehler. Der schwerwiegendste ist die Interrupt-Vector-Tabelle!

Da stimmt einfach gar nichts. Die ist voll verschoben wie bei den 
Großen. Das heißt es sind immer Doppeladressen. Also alles x2!

Was der BME280 kann ist in vielen anderen Beiträgen hier im Forum zu 
erlesen. Kurz - er kann Temperatur, Luftdruck und Feuchte bestimmen.

Ich hoffe es kann irgendwer gebrauchen.
Die einzelnen mathematischen .inc Funktionen werde ich mal noch 
gesondert hier im Forum als ZIP posten.

MfG Steffen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Kleines Update:
Ich hab das Ganze jetzt auch in einen Tiny85 hinein bekommen.
Der Verbrauch ist heftig: 95% Voll bei 8k Flash. Hätt ich bei 
Assembler nicht erwartet. Aber die Berechnungen zum BME280 scheinen 
es in sich zu haben. Das liegt daran, dass ja bei den älteren Tinys die 
Hardware Multiplikation fehlt. Eine Ausgabe mit Font-basierten Text auf 
das 128x64 Pixel OLED ist da nicht mehr möglich. So konnte ich nur 
noch eine Standard Text Ausgabe auf ein OLED machen.

Ich habe bei GitHub nur ein Projekt in Assembler zum BME280 gefunden. 
Sogar in einem Tiny25. Allerdings wird da nur der BME280 per TWI 
initialisiert und ausgelesen. Jegliche Berechnung der Werte sowie 
Ausgabe in irgendeiner Art fehlen!

Die dadurch entstandenen Include-Dateien zur Multiplikation habe ich in 
einem Artikel hinterlegt.
https://www.mikrocontroller.net/articles/Multiplikation_in_Assembler

MfG Steffen

: Bearbeitet durch User
von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Nachtrag: Ich habe die Dateien vergessen

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Und hier noch für einen ATmega8 mit Hardware Multiplier und Hardware TWI 
Unterstützung.

von Bernhard S. (bernhard)


Lesenswert?

Hallo Steffen,

der Assembler-Code für den BME280 erkennt er auch den BME680?

(BME680 = BME280 + Luftgüte)

Gruß

Brnhard

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@Steffen

hab mal Dein hex-File in einen ATmega8 geflasht.

Gute Nachricht: die LED leuchtet sofort.

Schlechte Nachricht: Das Display zeigt nichts an.

Am SCL PC5, keine Aktivität, permanent high.

Verzeichnisse angpasst.

Im AVR Studio viele Fehlermeldungen.

.include "m8def.inc" eingefügt, plötzlich keine Fehlermeldung,
OLED128*64 zeigt trotzdem nichts an, keinerlei SCL Signale.

Hardwarefehler kann ausgechlossen werden, da eine andere Test-Software 
funktioniert.

Hab mal das AVR Studi4 Projekt mit angehangen.

Was mache ich falsch?

Gruß

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Bernhard S. schrieb:
> hab mal Dein hex-File in einen ATmega8 geflasht.

Ich bezweifle, dass der relativ moderne ATmega808 kompatibel mit einem 
uralten ATmega8 ist.

von Oliver S. (oliverso)


Lesenswert?

Steffen H. schrieb:
> Und hier noch für einen ATmega8 mit Hardware Multiplier und Hardware TWI
> Unterstützung.

Er wird ja wohl die passende Version genomen haben...

Oliver

von Steffen H. (avrsteffen)


Lesenswert?

Oh, hier ist ja was los. Ich guck mir das morgen mal an. Komm gerade 
nicht an meine Werkzeuge ran.

Mit dem BME680 hab ich mich noch garnicht beschäftigt. Wenn die 
restlichen Register, I2C Adresse und Berechnungen gleich dem BME280 sind 
sollte man auch diesen Sensor damit zum Laufen bringen.

Gruß Steffen

von Steffen H. (avrsteffen)


Lesenswert?

Bernhard S. schrieb:
> Hallo Steffen,
>
> der Assembler-Code für den BME280 erkennt er auch den BME680?
>
> (BME680 = BME280 + Luftgüte)
>
> Gruß
>
> Brnhard

Das funktioniert leider nicht.
Der BME680 hat zwar die gleiche 1. I2C Adresse (0x76) aber bei den 
Adressen zu den internen Registern sieht es anders aus. Diese könnte man 
eventuell in der bme280.inc anpassen.
Inwieweit die Berechnung mit den Parametern und die Initialisierung des 
BME680 mit der des BME280 gleicht, hab ich jetzt noch nicht 
nachgeschaut.

Das das Display nicht funktioniert und du nichts auf dem TWI Bus wackeln 
siehst könnte genau daran liegen. Denn als erstes wird hier der Sensor 
initialisiert. Und genau da wird als aller Erstes die ID des Chips 
gelesen. Die Adresse des Registers schlägt fehl und es kommt ein NACK 
vom Sensor zurück. Darauf hin bricht die Initialisierung ab und geht in 
den Fehler Handler. Stopt die TWI Komunikation und schaltet den Bus ab.

Zu einer Initialisierung des Displays kommt es nicht mehr.

Steffen

von Bernhard S. (bernhard)


Lesenswert?

@Steffen, @alle

Hab mich mal am BME680 versucht, nur Probleme, könnt Ihr es Euch mal 
bitte anschauen.

Beitrag "BME680 Berechnung Temperatur Luftfeuchtigkeit Druck Gas Fragen Initialisierung Assembler ASM ATmega8"

Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.