Forum: Mikrocontroller und Digitale Elektronik Atmega88- Daten von Sensoren auf Flash abspeichern


von Megatron (Gast)


Angehängte Dateien:

Lesenswert?

Liebe Mikrocontroller-Community,

Ich habe ein Projekt erhalten bei dem ich noch auf dem Schlauch stehe, 
da ich noch ein Anfänger bin, was die Mikrocontrollerprogrammierung 
angeht. Deshalb hoffe ich, dass Ihr mir weiterhelfen könnt und bedanke 
mich schonmal im voraus.

Zum Projekt: Es geht um eine Atmega88 Hardware mit 2 Sensoren 
(BMP460-Beschleunigungssensor und BMP180-Luftdruck- und 
Temperatursensor), dessen Werte auf einem Flashspeicher ( SST25VF032B) 
in einer csv-Datei abgespeichert werden sollen. Diese Platine soll in 
einer Rakete verbaut werden, welche dann hochgeschossen wird. Dabei hat 
sie eine Beschleunigungszeit von ca. 2 Sekunden. Im Hochpunkt wird die 
Kapsel in der die Platine ist abgesondert und gleitet anhand eines 
Fallschirmes zum Boden. Innerhalb der Beschleuinigungsphase soll nur die 
Beschleuinigung und während der Gleitphase die Temperatur und der 
Luftdruck gemessen werden.

Problem: Mir ist nicht ganz klar, wie ich die Daten von den Sensoren 
einlesen und in den Flashspeicher in einer csv-Datei speichern kann und 
wie ich die Sensoren ansprechen kann und die einzelnen Werte an den 
speicher senden kann.

Mir wurden dazu diverse Bibliotheken überreicht, welche im Anhang 
vorhanden sind.

Vielen Dank für Ihre Hilfe!

von Megatron (Gast)


Lesenswert?

Ergänzung: Es wird mit dem Programm Atmel Studio 6 programmiert

von julian (Gast)


Lesenswert?

Guten abend,

Muss es zwangsweise mit dem Atmel Avr Studio 6 programmiert werden?
Ich lege dir für die 8-bit microcontroller das WinAVR Paket nahe.
http://www.webring.org/l/rd?ring=avr;id=59;url=http%3A%2F%2Fwinavr%2Esourceforge%2Enet%2F

Es sieht so aus als hättest du bereits alle nötigen Libs um all dies zu 
realisieren. Am besten studierst du zuerst diese und kannst evtl. schon 
selbst festellen welche funktionen du für dein projekt benötigst. Wenn 
du nach diesen googelst wirst du wahrscheinlich ein paar beispiele zu 
jeder lib finden. Über das csv format findet sich sicher auch was mit 
google.

Grober ablauf:
- Sensoren und flash mit hilfe der funktionen der libs initialisieren
- timer initialisieren mit einer interrupt-routine die in dem gefordetem 
speicherintervall ausgelöst wird.
- in der interrupt-routine die sensordaten mit den gegebenen funktionen 
der lib für den jeweiligen sensor auslesen.
- sensordaten in selber routine in csv format wandeln
- daten in flash schreiben mit den gegeben funktionen der lib..
- warten auf den nächsten interrupt des timers

Ist wie kuchen backen, die zutaten hast du ja eigentlich schon alle.

von Megatron (Gast)


Lesenswert?

Guten Tag,

Danke für Ihre rasche Antwort. Das Programm muss mit Avr Studio 6 
programmiert werden.

von Rudolph R. (rudolph)


Lesenswert?

julian schrieb:
> Ich lege dir für die 8-bit microcontroller das WinAVR Paket nahe.

Kannst Du auch einen guten Grund dafür nennen?
So wie ich das sehe ist WinAVR schon seit Ewigkeiten tot, der letzte 
Release war vor sechs Jahren.

Im Gegensatz zur "Atmel AVR (8 bit) GNU Toolchain":
https://gallery.atmel.com/Products/Details/fc38b14b-c4ce-49a8-a18a-b46c3effb2d0

Megatron schrieb:
> dessen Werte auf einem Flashspeicher ( SST25VF032B)
> in einer csv-Datei abgespeichert werden sollen.

Was willst Du auf dem FLASH mit einer CSV-Datei?
Die Datei müssen doch nur irgendwie gespeichert und dann zur Ausgabe 
über die serielle Schnittstelle dann passend aufbereitet werden.

: Bearbeitet durch User
von Megatron (Gast)


Lesenswert?

Rudolph R schrieb:

> Was willst Du auf dem FLASH mit einer CSV-Datei?
> Die Datei müssen doch nur irgendwie gespeichert und dann zur Ausgabe
> über die serielle Schnittstelle dann passend aufbereitet werden.

Wie gesagt, ich bewege mich auf Neuland, weshalb ich für bessere 
Alternativen sehr dankbar bin. Meinst du dann, dass ich die Daten dann 
nach der Übertragung auf dem PC in eine CSV-Datei speichere? Wie könnte 
man das denn realisieren?

Ich habe mich erstmal an die Programmierung des Flash-Speichers 
herangewagt. Ich möchte lediglich eine Testvariable abspeichern.

Code:

//Testvariable
  test = 44;
  //Test der Funktionalität
  DDRD |= (1<<DDD7);
  PORTD |= (1 << PD7);
  SPI_Flash_Init();

  adresse = 0x00;
  adresse_zeiger = &adresse;

  Flash_SPI_Write_Byte( OP_CODE_WRITE_BYTE, adresse_zeiger, test);

Was genau macht denn "OP_CODE_WRITE_BYTE"?

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
Noch kein Account? Hier anmelden.