collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Gravar no sd card  (Lida 5800 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Alentejo

  • Mini Robot
  • *
  • Mensagens: 14
Gravar no sd card
« em: 28 de Julho de 2009, 12:15 »
Ola bom dia!! eu gostaria que me podesem dar uma ajuda! Eu tou a tentar gravar um ficheiro no sd card e nesse ficheiro ter lá "Bom dia" e dps o consiga ver no hiperterminal!! Agradeço desde ja a vossa atensão!!abraços


Offline Alentejo

  • Mini Robot
  • *
  • Mensagens: 14
Re:Gravar no sd card
« Responder #2 em: 28 de Julho de 2009, 16:18 »
Obrigado Ricardo!!Ja consigo escrever no cartao e ler atraves do hiperterminal!!Abraços

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Gravar no sd card
« Responder #3 em: 28 de Julho de 2009, 16:43 »
Obrigado Ricardo!!Ja consigo escrever no cartao e ler atraves do hiperterminal!!Abraços

naquilo que puder ir ajudando ;)

Offline Alentejo

  • Mini Robot
  • *
  • Mensagens: 14
Re:Gravar no sd card
« Responder #4 em: 29 de Julho de 2009, 10:49 »
Ricardo sera possivel nós fazermos um ficheiro sem termos de o escrever no cartao? Isto é eu tou a utilizar o arduino onde tenho o sd card ligado a ele e queria por la ficheiros sem ter que os escrever no cartao!Obrigado

Offline ricard0g0mes

  • Mini Robot
  • *
  • Mensagens: 146
Re:Gravar no sd card
« Responder #5 em: 29 de Julho de 2009, 10:52 »
Ricardo sera possivel nós fazermos um ficheiro sem termos de o escrever no cartao? Isto é eu tou a utilizar o arduino onde tenho o sd card ligado a ele e queria por la ficheiros sem ter que os escrever no cartao!Obrigado

não entendi a pergunta...
queres por ficheiros no cartao sem ter de os escrever... nao entendo.
explica-te melhor...

Offline Alentejo

  • Mini Robot
  • *
  • Mensagens: 14
Re:Gravar no sd card
« Responder #6 em: 29 de Julho de 2009, 11:04 »
As paginas que você me indicou eu consegui escrever e ler o conteudo de um ficheiro!!Mas esse ficheiro foi inserido por mim no proprio cartao do sd card!! O que eu pertendia era agora programar de modo a fazer ficheiros no sd card!! Percebeu?

Offline iMartins87

  • Mini Robot
  • *
  • Mensagens: 39
Re:Gravar no sd card
« Responder #7 em: 23 de Agosto de 2009, 20:16 »
Fiz esta montagem com o seguinte código:

Citar
#include <sd-reader_config.h>
#include <sd_raw.h>
#include <sd_raw_config.h>

int print_disk_info();
int sample();
int readDisk();

byte incomingByte;
void printWelcome();
long int address;
byte tempBytes[2];


void setup()
{

  Serial.begin(9600);
  delay(1000);

  printWelcome();
  if(!sd_raw_init())
  {
     Serial.println("MMC/SD initialization failed");
  }
  print_disk_info();
}



void loop()
{
    int i;

    if(Serial.available()>0)
    {
      incomingByte=Serial.read();

    switch(incomingByte)
    {
        case 114:
            readDisk();
            break;
        case 115:
            sample();
            break;
        default:
            break;
    }
    }
}

int sample()
{
    int i,j;
    int temp;
    byte low;
    byte high;
    byte inByte;

    Serial.println();
    Serial.println();
    Serial.println("Sampling..");
    for(i=0;i<500;i=i+2)
    {
     if(Serial.available()>0)
     {
      inByte=Serial.read();
      if(inByte==113) return 0;
     }
     temp=analogRead(0);
     Serial.print(temp,DEC);
     Serial.print(" ");

     //Convert int to 2 bytes
     low=temp&0xFF;
     high=temp>>8;
    // Serial.print(temp,DEC);
     //Serial.print(low,DEC);
     //Serial.print(high,DEC);

     tempBytes[0]=low;
     tempBytes[1]=high;

     if(!sd_raw_write(i,tempBytes,2))
     {
       Serial.print("Write error");
     }
     //sd_raw_sync();
     delay(5000);

  Serial.println();

    }

    return 1;
}


int readDisk()
{
    byte low;
    byte high;
    byte info[2];
    int i;
    int  result;
    Serial.println();
    for(i=0;i<50;i=i+2)
    {
     sd_raw_read(i,info,2);

     //Serial.print(info[0],DEC);
     //Serial.print(" ");
     //Serial.print(info[1],DEC);
     low=info[0];
     high=info[1];
     result=high<<8;
     //result<<8;
     Serial.print(" ");
     Serial.print(result+low,DEC);
     Serial.print(" ");
    }

}

void printWelcome()
{
    Serial.println("------------------------");
    Serial.println("Data sampling system");
    Serial.println("send r to read disk");
    Serial.println("send s to start sampling");
    Serial.println("send q to stop sampling");
    Serial.println("Ready.....");
    Serial.println("-------------------------");
}


int print_disk_info()
{


    struct sd_raw_info disk_info;
    if(!sd_raw_get_info(&disk_info))
    {
     return 0;
    }


    Serial.println();
    Serial.print("rev:    ");
    Serial.print(disk_info.revision,HEX);
    Serial.println();
    Serial.print("serial: 0x");
    Serial.print(disk_info.serial,HEX);
    Serial.println();
    Serial.print("date:   ");
    Serial.print(disk_info.manufacturing_month,DEC);
    Serial.println();
    Serial.print(disk_info.manufacturing_year,DEC);
    Serial.println();
    Serial.print("size:   ");
    Serial.print(disk_info.capacity,DEC);
    Serial.println();
    Serial.print("copy:   ");
    Serial.print(disk_info.flag_copy,DEC);
    Serial.println();
    Serial.print("wr.pr.: ");
    Serial.print(disk_info.flag_write_protect_temp,DEC);
    Serial.print('/');
    Serial.print(disk_info.flag_write_protect,DEC);
    Serial.println();
    Serial.print("format: ");
    Serial.print(disk_info.format,DEC);
    Serial.println();
    Serial.print("free:   ");

    return 1;
}



Mas no entanto não consigo escrever nada no cartão SD porque mal inicio o HyperTerminal ele começa com o seguinte:

Citar
------------------------
Data sampling system
send r to read disk
send s to start sampling
send q to stop sampling
Ready.....
-------------------------

rev:    28
serial: 0x8F94BC8E
date:   1
7
size:   512229376
copy:   0
wr.pr.: 0/0
format: 0
free:

Sampling..
552
546
553
554
555
556
556

...e os números continuam e não param!!!

Alguém me pode dizer se isto é normal, caso não o que posso fazer para poder resolver esta situação?


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re:Gravar no sd card
« Responder #8 em: 24 de Agosto de 2009, 00:04 »
Com o código que tens sim, é perfeitamente normal. Ele vai imprimir números cerca de 250 vezes, com 5 segundos de intervalo entre cada impressão:

for (i = 0; i < 500; i = i + 2)
{
     (...)

     temp = analogRead(0);
     Serial.print(temp, DEC);
     Serial.print(" ");

     (...)

     delay(5000);
     Serial.println();
}

Só pára se carregares na tecla "q" minúscula (ascii 113; percebia-se logo se estivesse escrito 'q' em vez de 113), por causa desta parte:

if (Serial.available() > 0)
{
    inByte = Serial.read();
    if (inByte == 113) return 0;
}
« Última modificação: 24 de Agosto de 2009, 00:06 por Njay »