Simulation ok, Atmega führt Anweisung nicht aus

Gast #797530
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
#797539
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!
Gast #800052
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
Gast #800074
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.
Gast #800086
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?
#800103
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.
Gast #800180
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren