www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega128 Debuggen/Simulieren


Autor: Markus Schütz (jjmax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin gerade am Verzweifeln. Ich möchte ein kurzes Programm für einen 
ATMega128 debuggen. Hab es mit AVR Studio probiert. Ich starte den 
Debugger, klicke auf Step Into und will so das Programm testen. Bis zur 
Endlosschleife funktioniert das auch, aber sobald ich bei einer Schleife 
bin (auch bei endlichen) springt er einfach an den Beginn vom main. Hab 
schon alles probiert, aber ich finde nicht heraus warum das so ist.

Dann hab ich es mit VMLab probiert. Hier kommt andauernd der Fehler 
"Error! Unable to run compiler". WinAVR ist installiert. Auch der Pfad 
in den "Code Maker"- Einstellungen ist richtig eingestellt.

Hat wer eine gute Lösung wie ich einfache Programme für den ATMega 
testen kann? Ideal wäre noch eine möglichkeit ein Diagramm zu erzeugen, 
das die Ausgangspegel über der Zeit anzeigt.

Danke im Voraus,
Lg,
Max

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal den Code bei dem diese Fehler mit den endlichen Schleifen 
auftreten posten?

Autor: Markus Schütz (jjmax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich, sry

#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdio.h>


int main(void)
{
  int x = 0;
  int y = 0;

  PORTB = 0x00;
  DDRB = 0xC0;  
  TCCR1A = 0x23;  
  TCCR1B = 0x19;
  
  OCR1BH = 0xFF;
  OCR1BL = 0xFF;
  
  ICR1H = 0x00;
  ICR1L = 0xFF;
  
  sei();
  
  for (x = 0; x < 10; x ++)
  {
    y += x;
  }

  while(1);
}


Die for- Schleife ist nur da um zu sehen ob er in eine normale Schleife 
reingeht oder nicht. sobald ich bei sei(); bin und auf Step Into klicke 
beginnt er wieder beim main und manchmal auch irgendwo im Programm 
oberhalb der Schleife. Ich hab leider schon lang (ca. 4 Jahre) nichts 
mehr mit µC gemacht und bin schon ein bisschen eingerostet :)

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum mit sei() Interrupts erlauben, wenn's im ganzen Code keine gibt ?

Autor: Markus Schütz (jjmax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab schon weiterprogrammiert, dann wieder einen Teil gelöscht und das 
sei() vergessen, bzw brauche ich es später sowieso noch

Autor: Thomas K. (muetze1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher das die letzte while(1) nicht rausoptimiert wird und er somit 
main() beendet und das führt meistens zu einem reset. Und damit bist du 
wieder am Anfang...

Alternativ auch irgend einanderer INT der auslöst und keinen Handler 
hat.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und er somit main() beendet und das führt meistens zu einem reset.

Nein. tut es nicht. Der gcc bzw. die avrlibc hängen immer noch eine 
eigene Endlosschleife ans Programmende.

Das Problem wird ein Interrupt ohne ISR sein. Ich habe jetzt keine Lust, 
die die Bits der Timerinitialisierungen auseinanderzubasteln, aber nimm 
das sei() raus, und schau, was passiert.

Oliver

Autor: Markus Schütz (jjmax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver schrieb:
>>und er somit main() beendet und das führt meistens zu einem reset.
>
> Nein. tut es nicht. Der gcc bzw. die avrlibc hängen immer noch eine
> eigene Endlosschleife ans Programmende.
>
> Das Problem wird ein Interrupt ohne ISR sein. Ich habe jetzt keine Lust,
> die die Bits der Timerinitialisierungen auseinanderzubasteln, aber nimm
> das sei() raus, und schau, was passiert.
>
> Oliver

Jap, jetzt geht das debuggen :) Wie gesagt, hab lange nichts mit µCs 
gemacht :) Kann AVR Studio PWM simulieren, wenn ich vom PORTB ein 
log-File erzeugen lasse? Weil irgendwie kommt nichts raus. Ich will 
jetzt nicht dass mir irgendwer das Programm verbessert, sondern nur 
wissen ob es geht, damit ich nicht umsonst noch mal das Datenblatt lesen 
muss...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M103 Fuse.


Peter

Autor: Markus Schütz (jjmax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab M103 Fuse angehagt, aber es tut sich nicht viel.

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.