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
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
Und hier noch für einen ATmega8 mit Hardware Multiplier und Hardware TWI Unterstützung.
Hallo Steffen, der Assembler-Code für den BME280 erkennt er auch den BME680? (BME680 = BME280 + Luftgüte) Gruß Brnhard
@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
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.
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
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
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
@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
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.