Anfängerfehler

Gast #999887
Hallo,

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



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

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
Persönliche Seite
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?
Gast
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
Gast
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
Gast
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
Gast
Also ...

das is ja ma interressant:

habe das jetzt so gemacht:
1
include <avr/io.h>          
2
 
3
int main (void) {           
4
 
5
   DDRB  = 0xff;             
6
   PORTB = 0x03;             
7

8

9
int i;
10
 
11
 while(1)
12
 {
13

14
PORTB = 0x03;             
15
 
16
for(i=0;i<1000;i++);
17

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

21
 }
22
   
23
   return 0;                
24
}

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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.