www.mikrocontroller.net

Forum: Compiler & IDEs Attiny44 Problem mit Watch im Debugwiremodus


Autor: vaid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich nutze den CodeVisionAVR Compiler und debugge dann im neuesten AVR 
Studio. µC ist ein ATtiny44.
Beim Debuggen habe ich folgendes Problem (Code aufs wesentliche 
gekürzt):
eeprom unsigned char table[64] =
    { Wert0,....Wert63 }; //64 Werte zu Verarbeitung des ADC Wertes

unsigned char read_adc(void)
{
  [...] //AD-Wandlung

  adc  = ADCH;
  adc  = table[adc/4];
  
}

Die AD-Wandlung funktioniert super, der adc Wert wird in der Watch 
gescheit angezeigt. Steppe ich nun einen Schritt weiter wird adc aber 
immer zu 0xFF, ganz egal welcher Wert bei der AD-Wandlung herausgekommen 
ist.
Eigentlich müsste aber doch der Wert der an der Array-Stelle hinterlegt 
ist angezeigt werden.
Warum ist das so ? g
Könnte mir vorstellen, dass die EEPROM Tabelle nicht berücksichtigt 
wird?
Oder falsches Zusammenspiel von Codevision und AVR Studio 
(unwahrscheinlich).

Der Code funktioniert übrigens wenn Debugwire nicht aktiviert ist. 
Hardwarefehler schließe ich vorsichtig aus. Nach Masse ist kein 
Kondensator, nur ein 7kOhm Widerstand nach Vcc (ich weiss, sollten 10 
sein aber es tut..)

Vielen Dank für eure Mühen!

Autor: vaid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe noch vergessen zu erwähnen, dass das kein Anzeigefehler ist. Der 
Code reagiert so, als ob im Register tatsächlich 0xFF steht.

Autor: Barny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dass wichtig sehe, steht in der Variable adc immer der Wert von 
table[0]

Denn du machst nichts anderes, als die oberen 2 Bit's des ADC's 
auszulesen, diesen Wert drch 4 zu teilen und dann das Ergebnuis als 
Array-Position zu verwenden.

in ADCH können nur die Werte 0, 1, 2 oder 3 stehen.
Alle Werte ergeben durch 4 geteilt 0.
Ich glaube nicht, dass du dass so machen willst.

Autor: vaid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Barny schrieb:
> Wenn ich dass wichtig sehe

Schön geschrieben :)

Stimmt aber leider nicht. Wie gesagt, der Wert in ADC ist korrekt. Auch 
ist table[0] nicht 0xFF.

Sonst noch jemand?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Debuggen wird ja das Programm immer neu geladen.
Warscheinlich fehlt da das Laden des EEPROM und daher bleibt er 
gelöscht.

Warum legst Du das Array nicht in den Flash?
Ist schneller und weniger Code.


Peter

Autor: vaid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat(te) historische Gründe. Ursprünglich wars der Tiny24 und da war 
Programmplatz knapp. Wollte das ganze nun eh anders machen, war aber 
über den "Fehler" verwundert.

Sollte noch jemand ne Idee haben ... Interesse habe ich immernoch!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, warscheinlich gibts im Debugger irgendwo ne Einstellung, daß 
auch der EEPROM geladen wird. Und die wird wohl per default aus sein.


Peter

Autor: vaid (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank!
Gab ne Funktion Up/Download Memory in der man das EEPROM beschreiben 
kann. Nun gehts. :)

Achja, Programmer ist der JTAGICE MKII Clon von Futureelectronics falls 
mal jemand das selbe Problem hat.

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.