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
> die werte sind irgendwie falsch
Kannst Du 'irgendwie falsch' naeher definieren?
Die Werte in ButterflyLCD sehen so aus: 215 37 25 26 100 39... Ich denke dass die messungen nicht in EEprom gespeichert sind ...
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.
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!
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.