www.mikrocontroller.net

Forum: Compiler & IDEs Vektor speichern


Autor: Afuf Bou (afif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ,
Ich wollte werte von mein Adc_read() jedes 10 ms im eeprom speichen und
wider in LCD zeigen .Aber  funktioniert nicht:die werte sind irgendwie
falsch .Warum?


void Initialization(void);
EMPTY_INTERRUPT(__vector_default);//alle Interrupt ausprungen die nicht
belegt sind
    SIGNAL(SIG_OUTPUT_COMPARE0)//zielwert A erreicht wird,
    {
    zaehler++;


    }


void Delay(unsigned int millisec);
void OSCCAL_calibration(void);



int main(void)
{
    PGM_P statetext = PSTR("KRAIS_SAEGER");
  uint8_t input, buttons;
  uint8_t last_buttons = KEY_NULL;
  uint8_t vektor[20];
    Initialization();
   timer0_init() ;//10ms der schritt
    sei();

    for (;;)
    {
        if (statetext) {
      LCD_puts_f(statetext, 1);
      LCD_Colon(0);
      statetext = NULL;
    }

      for(int i=0;i<20;i++)
            // Read buttons
    {   if(zaehler ==i*10&& zahl==0)
                 {
               vektor[i] =ADC_read();
            if(i==20)
            zahl=1;
          }


        }StoreEEPROM(vektor,20,0x030);
        Delay(500);
          input = getkey();
    switch (input) {
      case KEY_ENTER:


           LoadEEPROM(vektor,20,0x030);
           Delay(500);
                 for(int b=0;b<20;b++)
          { Delay(2000);
            itoa ((vektor[b] ),buffer,10);

            LCD_puts(buffer,1);

              }
danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> die werte sind irgendwie falsch

Kannst Du 'irgendwie falsch' naeher definieren?

Autor: Afuf Bou (afif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Werte in  ButterflyLCD sehen so aus:
215 37 25 26 100 39...
Ich denke dass die messungen nicht in EEprom gespeichert sind ...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super

Und wie sollten die Werte aussehen?

Lass Dir doch nicht alles aus der Nase ziehen.
Wenn Du den Verdacht hast, dass die Werte falsch
abgespeichert werden, dann ist es wohl naheliegend
zhunaechst mal auszugeben was dann ins EEProm
geschrieben wird. Danach schreibt man die Werte
rein, liest sie aus und vergleicht die gespeicherten
Werte mit dem was eigentlich drinnen stehen sollte
(das weiss man, weil man sich das ja zuvor hat
ausgeben lassen).

> Ich denke dass die

Das (naemlich raten) macht man nur, wenn man ueberhaupt
nichts anderes hat, oder es keine Moeglichkeit gibt
eine reproduzierbare Ausgangssituation zu schaffen.
In allen anderen Faellen gilt: zunaechst muss man mal
die Fehlersituation reproduzierbar hinkriegen. Alles
andere ist stochern im Nebel. Und ja: reproduzierbar
machen kann auch bedeuten, dass man sich ein eigenes
Testprogram schreibt. In Deinem Fall: Ein simples Programm
das einfach nur einen (bekannten) Wert ins EEprom
schreibt und diesen wieder ausliest. Durch das schreiben
dieses Testprogrammes fallen dann schon mal moegliche
andere Fehlerquellen (Stichwort: Wer sagt Dir eigentlich
dass der ADC vernuenftige Werte liefert?) weg und Du kannst
Dich nur auf das EEProm und sonst nichts konzentrieren.
Ein beliebter Fehler aller Programmier-Anfaenger ist immer
wieder: zu viele Baustellen auf einmal und dann kommen
sie mit der sich daraus ergebenden Komplexitaet nicht
mehr zurecht. Also: Einzelkomponenten testen:
* Ein Pgm, dass nur den ADC ausliest und die Werte anzeigt
* Ein Pgm, dass nur Werte ins EEprom schreibt und von dort
  liest.
Erst wenn beides ohne Probleme klappt und Du jeden einzelnen
Schritt im Pgm genau verstehst werden beide Teile kombiniert.

Autor: Afuf Bou (afif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke karl für dein Rat .
Ich versuche mein Frage besser zu stellen:
Ich will die Werte ein Analog Signal jedes 10 ms im LCD zeigen damit
ich diese Kurve zeichen kann.
Kann man diesen werte mit der ADC Voltage(J407) der AVR-BUTTERFLY lesen
mit diesem Taktrate oder muss mann derJTAG(J402)benutzen ?
Wenn Das mit JTAG gemacht wurde, wie kann ich auf ADC wert zugreifen?
(Ich habe schon die disable_JTAG() geschrieben)
danke für eure Geduld!

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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