adatrögzítés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

adatrögzítés

Hozzászólás Szerző: Kotesz »

Sziasztok!

Körbejártam a fórumot de nem találtam választ az általam keresett problémára.

Egy sd kártyára kellene mentenem hőmérséklet adatokat amiket egy atmega8 chip küld soros porton.
A kártyán úgy kellene eltárolni hogy egy txt állományban legyenek az adatok, amit bármikor egy pc-n tudjam kielemezni.
Milyen lehetőségeim vannak erre?
Hogyan tudok ilyen állományt létrehozni az sd kártyán?

Előre is köszi a válaszokat.
Kotesz
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: adatrögzítés

Hozzászólás Szerző: kapu48 »

egy atmega8 ehez :cry: kicsi!

Esetleg:
SD kártya ISP módban fájl formátum nélkül
viewtopic.php?f=1&t=713&hilit=dos+sd
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Re: adatrögzítés

Hozzászólás Szerző: Kotesz »

Az sd kártyához nem atmega8- at gondoltam hanem egy atmega128A.
Az atmega8 csak az adatokat küldi amit sd kártyára kellene írni hogy pc-n is feldolgozható legyen.
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: adatrögzítés

Hozzászólás Szerző: GPeti »

AVR DOS segítségével könnyen lehet SD kártyára írni.
A program elején van:

$Include "Config_MMC.bas" 'include mmc
If Gbdriveerror <> 0 Then End
$Include "Config_AVR-DOS.BAS" 'include avr-dos
B = Initfilesystem(1) 'init file system
If B <> 0 Then Print "Errore MMC" ' error

A továbbiakban meg tudsz nyitni file-t írásra is:

Open Log_file_name For Append As #2
Print #2 , "Log data" ; Log_data
Close #2

Kicsit több mindenből is áll a program, de ebből már el tudsz indulni.
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Re: adatrögzítés

Hozzászólás Szerző: Kotesz »

Köszönöm mindenkinek, elindulok a avr-dos irányában.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: adatrögzítés

Hozzászólás Szerző: Robert »

Üzleti célú alkalmazás esetén az AVR-DOS licenszdíjas!
Free: KokkeKat FAT kezelőprogramok.
Avatar
Kotesz
Tranzisztorgyógyász
Hozzászólások: 171
Csatlakozott: 2009. szeptember 24. csütörtök, 6:00

Re: adatrögzítés

Hozzászólás Szerző: Kotesz »

Nem üzleti célú hanem hobbi célú, de jó tudni. :lol:
Avatar
GPeti
Bitmanipulátor
Hozzászólások: 131
Csatlakozott: 2011. március 3. csütörtök, 7:00

Re: adatrögzítés

Hozzászólás Szerző: GPeti »

Megkerestem egy régebben Arduinora írt data loggeremet ami gps modulról 4800baud sebességgel érkező mondatokat menti kártyára, működik de élesben nem használtam, jobb az AVR DOS os.

Kód: Egész kijelölése

// SD  data logger
// Arduino 1.0.1
#include <SD.h>
const int chipSelect = 4; 

 //The circuit:
 // SD card attached to SPI bus as follows:
 // MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 // MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 // CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 // CS - depends on your SD card shield or module. 
 // in 4 used here for consistency with other Arduino examples
 
 // pin 0 a GPS TX kivezetésére megy
 // Az SD kártya 3,3V ról megy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ellenben kijön a füst belőle
 // A MOSI CLK CS bemeneteket egy soros 2kOhm ellenállással és párhuzamos 3,3kOhm 
 // ellenállással -mint feszültségosztó- kell illeszteni ha 5V os a rendszerünk

String inputString = "";         // a string to hold incoming data
byte I = 0;
byte BT = 0;
boolean stringComplete = false;  

void setup() {
  Serial.begin(4800); // itt kell beállítani hogy a GPS modul mekkora baud-dal megy.
  // Nem teszteltem nagyobb sebességen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  inputString.reserve(200);
  delay(100);
  Serial.print("Initializing SD card...");
  pinMode(10, OUTPUT); //RECLED vilagít ha felvétel van vagy bekapcsoláskor ha nincs sd kártya. pin 10 csatlakozik + 330 Ohm ellenállás.
  pinMode(9,INPUT_PULLUP); // REC button a felvétel elindításához meg kell nyomni. pin 9 csatlakozik
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return;
  }
  Serial.println("card initialized.");
  digitalWrite(10,HIGH);
  delay(1500);
  digitalWrite(10,LOW);
 
 //Serial.print("$PSRF103,02,00,00,01*26");
 //Serial.write(13);
 //Serial.write(10); 

 //Serial.print("$PSRF103,03,00,00,01*27");
 //Serial.write(13);
 //Serial.write(10);   
}
void loop() { 
  if (digitalRead(9) == HIGH && BT == 1) BT = 0;
  if (digitalRead(9) == LOW && BT == 0) {
  if (stringComplete = true) { 
    
    BT = 1;
    I++;
    if( I > 1) I = 0; 
    if( I == 0) digitalWrite(10,LOW); 
    if( I == 1) digitalWrite(10,HIGH);
    }
  }
  
  if (stringComplete && I == 1) {
    
  File dataFile = SD.open("datalog.log", FILE_WRITE);
  if (dataFile) {
    dataFile.println(inputString);
    dataFile.close();
   //Serial.println("OK");
  }  
  else {
    Serial.println("Error");
  }        
    inputString = "";
    stringComplete = false;
}
}
void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read(); 
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: adatrögzítés

Hozzászólás Szerző: Robert »

Trükk:
- AVRDOS: kiírás után flush #1-l a FAT-ot is frissítsd le,
- az egyidőben nyitott file-k száma: 1, ezt írdd át az AVR-DOS.bas-ban (minden file ~520 byte memfoglalást jelent),
- kiírás utá zárd le a file-t, ne maradjon nyitva. Open-write-fush-close,
- ha kiveszed a kártyát, egy gombbal jelezd! Csunya adatvesztes lehet kulonben,
- open file #2 for output -> felulirja,
- open file #2 for append -> hozzafuzi.
Válasz küldése