mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie kann ich debuggen


Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich baue eine kleine Schaltung mit einem ATtiny 25
Zwei Portleitungen sind Digital-Input, zwei Portleitungen sind 
Analog-Input, die verbliebene Portleitung steuert über einen Transistor 
ein Relais.
Wie kann ich zum Debuggen sehen, was mein µC gerade macht, ob er 
Berechnungen so macht wie ich das will?

Leider hat sich in der Vergangenheit gezeigt, der µC macht das was ich 
programmiere, nicht das, was ich will   ;-)

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht mit DebugWire, 1-Draht-Anschluß am Reset-Pin.  Dazu brauchst Du 
als Minimalausrüstung einen AVR Dragon und AVR-Studio oder avarice.

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bringt es 50 cents an einer CPU zu sparen, wenn man sich dabei das 
Debuggen erschwert/verunmoeglicht ? Unter einer Mega32 macht es keinen 
Sinn. Fuer mich persoenlich macht es unter einer Mega644 keinen Sinn. 
Ich mag es ein paar unbenutzte Pins zu haben und das UART auch noch 
gebrauchen zu koennen. Der 644 hat ein extra UART.
Nehmen wir einen grosszuegigen Preisunterschied von 2 Euro. Bei 100 
Stueck ist die Ersparnis gerade mal 200 Euro. Das reicht grad fuer einen 
Nachmittag Debuggen. Klopp den Tiny25 in die Tonne. Das ist was fuer 
ganz grosse Serien. Ab 5000 Stueck kann man langsam darueber nachdenken.

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A...aha Soooo. schrieb:
> Klopp den Tiny25 in die Tonne.

Ich brauche den Gain * 20 für die Analogeingänge.
Sowas haben die ATmegas nicht.

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

Bewertung
0 lesenswert
nicht lesenswert
Man kann ja auch erst mal mit einem größeren AVR (mit mehr Pins) das 
Programm entwickeln. Dann stehen einem viele Debug-Möglichkeiten offen. 
Und erst dann, wenn das meiste Debuggt ist, wechselt man auf die 
Zielhardware mit den eingeschränkten Möglichkeiten und stellt dort dann 
den Rest fertig. Eventuell kann man ja auch temporär zu Debug Zwecken 
irgendeinen Ausgang zweckentfremden und an dem eine LED anschliessen 
oder sowas.

Autor: Mausejule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> Ich brauche den Gain * 20 für die Analogeingänge.
> Sowas haben die ATmegas nicht.

ATMega164A/324A/644A:
>8-channel, 10-bit ADC
>Differential mode with selectable gain at 1x, 10x or 200x

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mausejule schrieb:
>>Differential mode with selectable gain at 1x, 10x or 200x

Ich brauche genau 20x  ... sorry

Kann man so ein C-Programm eventuel mit AVR-Studio4 auch ohne Hardware 
debuggen?
Siehe Beitrag "10 * 10 Bit multiplizieren"
um die 10 * 10 Bit Multiplikation zu testen.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> Ich brauche genau 20x  ... sorry

200x / 10 = 20x
"/10" = Spannungsteiler

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine 10x10 Multiplikation kann man auch am Simulator testen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A...aha Soooo. schrieb:
> Unter einer Mega32 macht es keinen
> Sinn. Fuer mich persoenlich macht es unter einer Mega644 keinen Sinn.

Das ist nur Deine rein persönlich Meinung, die mußt Du aber nicht 
anderen aufzwingen.

Es macht durchaus Spaß, nen 8-Pinner zu programmieren und nicht ein 
riesen Kuchenblech aufbauen zu müssen.

Man kann auch 8-Pinner gut debuggen.


Eine Möglichkeit ist eine UART für Debugausgaben:
void sputchar( uint8_t c )
{
  c = ~c;
  STX_PORT &= ~(1<<STX_BIT);            // start bit
  for( uint8_t i = 10; i; i-- ){        // 10 bits
    _delay_us( 1e6 / BAUD );            // bit duration
    if( c & 1 )
      STX_PORT &= ~(1<<STX_BIT);        // data bit 0
    else
      STX_PORT |= 1<<STX_BIT;           // data bit 1 or stop bit
    c >>= 1;
  }
} 

Man kann vieles aber auch simulieren.


Und das beste Debugwerkzeug ist immer noch das systematische Herangehen.
Man schreibt erstmal so präzise wie möglich auf, was soll das Programm 
machen. Und dann untersucht man, wann weicht es ab und wie weicht es ab.


Und man kann auch alle 6 IO-Pins nutzen, wenn man einen Bootloader 
reinprogrammiert.


Peter

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll daran falsch sein, einen Tiny zu debuggen?  DebugWire ist im 
Single Step zwar langsamer als JTAG und kann etwas weniger, aber 
Geschwindigkeitsrekorde bricht man während des Debuggens eh nicht; der 
Erkenntnisgewinn wiegt das auf oder man braucht gar keinen 
Hardware-Debugger.

Wozu so einen großen Pflätscherich reinstecken, solange es ein kleiner 
und feiner Winzling tut?  Das bisschen Mehr beim Debuggen wiegt das 
nicht auf.

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A...aha Soooo. schrieb:
> Eine 10x10 Multiplikation kann man auch am Simulator testen.

Genau das war der Kernpunkt meiner Frage.
Wie kann ich ATtiny C Programme simulieren?
Es kommmt mir dabei gar nicht auf die Echtzeitsimulation von Peripherie 
an, sondern nur, ob bestimmte Berechnungen so funktionieren.
Fehler die sich gerne einschleichen wie z.B.
unsigned short integer ADC_Wert; //ADC rechtsbündig = 10 Bit
unsigned long integer Ergebnis;
Ergebnis = ADC_Wert * ADC_Wert; // oh shit die oberen 4 Bit sind weg :-(
müsste man so vermeiden, indem man die Berechnungen mit ein paar 
Testwerten überprüfen könnte...

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

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> A...aha Soooo. schrieb:
>> Eine 10x10 Multiplikation kann man auch am Simulator testen.
>
> Genau das war der Kernpunkt meiner Frage.
> Wie kann ich ATtiny C Programme simulieren?
> Es kommmt mir dabei gar nicht auf die Echtzeitsimulation von Peripherie
> an, sondern nur, ob bestimmte Berechnungen so funktionieren.

Es gibt ja immer noch den im AVR-Studio integrierten Simulator.
Wundert mich eigentlich, dass du den nicht kennst. Programm compilieren 
und dann im Menüpunkt "Debug" im Simulator das Programm simuliert 
starten.

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Programm compilieren
> und dann im Menüpunkt "Debug" im Simulator das Programm simuliert
> starten.


Du bist ein Schatz!
Fühl dich gedrückt!
Wenn du jetzt da wärst, würd ich
auf dem Weihnachtsmarkt eine Runde Hustensaft ausgeben

> Wundert mich eigentlich, dass du den nicht kennst.
Allein hätte ich mich nie getraut da mal zu klicken...

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.