Atmega128 Debuggen/Simulieren

OP #1450146
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
OP
Natürlich, sry

1
#include <avr/interrupt.h>
2
#include <avr/io.h>
3
#include <stdio.h>
4

5

6
int main(void)
7
{
8
  int x = 0;
9
  int y = 0;
10

11
  PORTB = 0x00;
12
  DDRB = 0xC0;  
13
  TCCR1A = 0x23;  
14
  TCCR1B = 0x19;
15
  
16
  OCR1BH = 0xFF;
17
  OCR1BL = 0xFF;
18
  
19
  ICR1H = 0x00;
20
  ICR1L = 0xFF;
21
  
22
  sei();
23
  
24
  for (x = 0; x < 10; x ++)
25
  {
26
    y += x;
27
  }
28

29
  while(1);
30
}

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 :)
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.
Gast
>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
OP
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...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.