Forum: Compiler & IDEs Simulation ok, Atmega führt Anweisung nicht aus


von Hennig (Gast)


Lesenswert?

Hallo,

Ich habe ein Problem beim Flashen des ATmega 8. Verwende AVR Studio 4.13 
mit SP1, AVR gcc Plugin und Win AVR neuste Version. AVR Studio kann das 
Programm, mit einer Switch Anweisung und Portabfrage, ohne Problem 
simuliert und die notwendige hex-Datei erzeugen. Zum flashen des ATmega 
8 verwende ich Pony Prog2000. Die Anweisungen wie while (1) und for - 
Schleifen werden vom ATmega korrekt ausgeführt. Als Header Datei habe 
ich  im Programm die stdlib.h und io.h eingebunden.

Ich danke euch im voraus....


mfg.
Hennig

von Patrick (Gast)


Lesenswert?

Und was genau ist jetzt Dein Problem? Oder hab ich das einfach 
überlesen? Der Quellcode wär auch nicht schlecht.

von Johannes M. (johnny-m)


Lesenswert?

> Simulation ok, Atmega führt Anweisung nicht aus
...
> Die Anweisungen wie while (1) und for -
> Schleifen werden vom ATmega korrekt ausgeführt
Das ist ein Widerspruch. Bitte erzähl mal, was Du wirklich machst und 
was wirklich das Problem ist. Und ohne Dein Programm zu sehen, kann 
man da gar nichts zu sagen!

von Falk B. (falk)


Lesenswert?


von Hennig (Gast)


Lesenswert?

Hallo,

Ich habe ein Problem beim Flashen des ATmega 8. Verwende AVR Studio 4.13
mit SP1, AVR gcc Plugin und Win AVR neuste Version. AVR Studio kann das
Programm, mit einer Switch Anweisung und Portabfrage, ohne Problem
simuliert und die notwendige hex-Datei erzeugen. Zum flashen des ATmega
8 verwende ich Pony Prog2000. Die Anweisungen wie while (1) und for -
Schleifen werden vom ATmega korrekt ausgeführt. Als Header Datei habe
ich  im Programm die stdlib.h und io.h eingebunden. !! Programmiere nur 
im AVR Studio.

Programm:
#include <io.h>              //Standardinclude
#include <stdlib.h>
#include <stddef.h>
#include <stdint.h>



int main (void)
{

   //Variablen Vereinbarung

  unsigned char x=0,b;
  unsigned int a;

  //Ports Richtungen

  DDRC=(0<<PC0|0<<PC1|0<<PC2|0<<PC3|0<<PC4|0<<PC5|0<<PC6);

  DDRD=(1<<PD0);
while(1)
{
  switch(PINC)
  {

  case 1:
  {  x=1^x;
    PORTD=x;
      for(a=0;a<30000;a++)
        {
          for(b=0;b<2;b++);
        }
  }break;

  case 2:PORTD=0xff;break;

  default: break;
  }

}
   //return 0;
}




Ich danke euch im voraus....


mfg.
Hennig

von Patrick (Gast)


Lesenswert?

>Die Anweisungen wie while (1) und for - Schleifen werden vom ATmega korrekt 
ausgeführt.

Und was funktioniert denn jetzt nicht? Deine Problembeschreibung ist 
immer noch unverständlich.

von Patrick (Gast)


Lesenswert?

Ich nehme mal an, Du willst PortD als Ausgang und PortC als Eingang, 
oder? Dann würd ich das so machen:
1
DDRC = 0x00;
2
DDRD = 0xff;

Oder was willst Du mit Deinem Code genau erreichen?

von Patrick (Gast)


Lesenswert?

Oder so:
1
DDRC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6));
2
DDRD |= (1<<PD0) | (1<<PD1) | (1<<PD2) | (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6) | (1<<PD7);

Ich glaub nicht, dass das funktioniert, was Du da machen willst.

von Werner (Gast)


Lesenswert?

Naja, er schreibt doch, das er ein Problem beim flashen hat. Das geht 
leider in dem Wust von Infos unter.
Welche Hardware benutzt du denn zum flashen? Wie äußert sich der Fehler 
(außer das der Code anschließend nicht läuft)? Gibts Fehlermeldungen von 
Ponyprog?

von Karl H. (kbuchegg)


Lesenswert?

> Ich habe ein Problem beim Flashen des ATmega 8. ...
> Die Anweisungen wie while (1) und for -
> Schleifen werden vom ATmega korrekt ausgeführt.

Worin besteht denn jetzt das Problem?

Hast du Probleme beim flashen (also beim transferieren des
Programmes in den AVR)?
Oder hast du Probleme mit dem Programm an sich?

Beides sind 2 paar Schuhe und haben nichts miteinander zu tun?

PS: es bringt nichts eine Fehlerbeschreibung einfach zu wiederholen.
Wenn sie beim ersten mal keiner verstanden hat, dann versteht sie
auch jetzt keiner.

von Hennig (Gast)


Lesenswert?

Es werden keine switch Anweisungen mit Portabfrage ausgeführt aber 
richtig simuliert im AVR Studio. Wer programmiert alleine nur mit AVR 
Studion und plug in? Das Programm funktioniert habe es simuliert.

von Patrick (Gast)


Lesenswert?

Hast Du Dir denn mal genau überlegt, ob die case-Werte (1 und 2) 
stimmen? Hast Du da Taster dran? Sind die Low- oder High-active? Pull-up 
Widerstände?

Beschreib doch mal, was Du mit Deinem Programm bezwecken willst.

von Hennig (Gast)


Lesenswert?

ist ok hat sich erledigt

von Patrick (Gast)


Lesenswert?

Und was wars?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hennig wrote:
> Es werden keine switch Anweisungen mit Portabfrage ausgeführt aber
> richtig simuliert im AVR Studio.

Sind die beiden Eingabegeräte (Taster?, Schalter?) an PORTC richtig 
angeschlossen?

Ist das Ausgabegerät (LED?) an PORTD richtig angeschlossen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.