mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfehler


Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dieses ist wahrscheinlich die simpelste Frage überhaupt, aber ich bin 
komplett am verzweifeln.



Habe folgenden code geschrieben bzw. zusammengesucht´:
#include <avr/io.h>          // (1)
 
int main (void) {            // (2)
 
   DDRB  = 0xff;             // (3)
   PORTB = 0x03;             // (4)
 
   while(1) {                // (5a)
     /* "leere" Schleife*/;  // (5b)
   PORTB = 0x02;
   PORTB = 0x04;
   }                         // (5c)
 
   /* wird nie erreicht */
   return 0;                 // (6)
}

Warum??? bleibt AVR Studio 4 bei jedem Debuggen bei PORTB = 0x04; 
stehen?

da is doch nichts falsch!

Ausgabe an PORTB müsste doch zwischen 0x02 und 0x04 wechseln oder?

Habe ich etwas falsch eingestellt? Habe neu Compiliert neu geladen,...

Danke für alle Antworten

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm hat keinen Fehler. Vielleicht verstehst du nicht, was der 
Debugger macht; ich verstehe jedenfalls nicht was du im Debugger machst 
und was du mit "bleibt stehen" meinst. Ist es der Simulator/Debugger in 
AVR Studio oder ein externer per Hardware an einen AVR angeschlossener 
Debugger? Wie bedienst du den Debugger, d.h. hast du Breakpoints gesetzt 
oder machst du Einzelschrittmodus oder Auto-Stepping? Richtiger µC im 
Simulator/Debugger eingestellt?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort

Also ich mache das folgendermassen:

Ich habe den ATmega8 im AVR - Studio eingestellt.

Dann ´klicke ich auf "Build and Run".
Daruf erscheint ein gelber Pfeil vor der main.
Jetzt betätige ich den Butten "Einzelschritt".

Doch sobald ich in die While - Schleife komme springt der gelbe Pfeil 
unkontulliert hin und her.

... Also ich weiss wie so ne schleife funktionieren sollte.

Aber irgendwas scheine ich falsch zu machen

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Doch sobald ich in die While - Schleife komme springt der gelbe Pfeil
> unkontulliert hin und her.

Was macht der?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also entweder bleibt der Pfeil bei PORTB = 0x04 stehen
oder das Programm startet einfach.

Aber der gelbe Pfeil springt nicht wieder auf PORTB = 0x03 zurück.

Das unkontrullierte hin und her springen habe ich einmal erzeugt als ich 
nnoch mehr solcher Zuweisungen in die While eingefügt habe

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn du willst, das was blinkt, brauchst du warscheinlich ein Delay 
zwischen den beiden Portänderungen, sonst geht das nämlich so schnell, 
dass du es nicht beobachten kannst.

Schreib am besten was du dir von dem Programm erwartest, dann kann man 
besser helfen.

Grüße Marcus

Autor: !!! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das ausprobiert, und es funktioniert einwandfrei mit F11.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ...

das is ja ma interressant:

habe das jetzt so gemacht:
include <avr/io.h>          
 
int main (void) {           
 
   DDRB  = 0xff;             
   PORTB = 0x03;             


int i;
 
 while(1)
 {

PORTB = 0x03;             
 
for(i=0;i<1000;i++);

PORTB = 0x00;   
for(i=0;i<1000;i++);

 }
   
   return 0;                
}

jetzt geht es.


ABER? Warum muss ich beim Debuggen eine solche Warteschleife einfügen 
das muss in den AVR Simulator doch auch anders funktionieren.

Also so wie ich es ganz oben geschrieben habe.

Da ich mir das Programm im Einzelschritt anschaue ist die Zeit doch 
nicht interressant oder?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autor: !!!

danke für den Test aber was machst du anders wie ich?

Autor: !!! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nichts, Build and Run, und dann Einzelschritt mit F11.

Das war's.

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.