Programm startet nach Reset nicht

Gast #404839
Lesenswert?
• ▲
▼
Hi @ all

Ich benutze ein ATMega32. Dieser bekommt einen externen Takt über einen
Quarzoscillator (16MHz). Der Takt ist am Port XTAL1 angeschlossen. Der
Port XTAL2 ist nicht belegt.

Ich habe eine Programm geschrieben, dass ich mit Hilfe des ATMEL-Boards
STK500 auf meienen eigene Platine übertrage. Die Programmierung des
ATMEGA32 wird ohne Fehlermeldung abgeschlossen. Anschließend läuft das
Programm auch ohne weitere Problem. Wenn ich jedoch das
Programmierkabel abziehe und den µP resete, dann funktioniert das
Programm nicht mehr.

Das Programm soll fogendes machen:

Es initialisiert das Display. Anschließend wird der Text "Welcome in
HL" ausgegeben. Danach läuft eine Endlosschleife, die die Zahl 1 bis 8
ausgibt. Anschließend wird das Dipslay gelöscht und die Zahl 1 bis 8
wird erneut ausgegeben. Wenn der Atmel zurückgesetzt wird, dann steht
auf dem Display nichts. Was habe ich falsch gemacht?

Hier mein Programm:

#include <mega32.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x1B
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>



// Declare your global variables here

void main(void)
{

delay_ms(1000);
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out
Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
State0=0
PORTA=0x00;
DDRA=0xFF;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization
delay_ms(1000);
lcd_init(20);

// go on the second LCD line
lcd_gotoxy(3,0);

// display the message
lcd_putsf("Welcome in HL");
delay_ms(2000);

while (1)
      {
      // Place your code here
      lcd_clear();
      delay_ms(300);
      lcd_gotoxy(3,1);
      delay_ms(300);
      lcd_putsf("1");
      delay_ms(300);
      lcd_putsf("2");
      delay_ms(300);
      lcd_putsf("3");
      delay_ms(300);
      lcd_putsf("4");
      delay_ms(300);
      lcd_putsf("5");
      delay_ms(300);
      lcd_putsf("6");
      delay_ms(300);
      lcd_putsf("7");
      delay_ms(300);
      lcd_putsf("8");
      delay_ms(300);
      };
}
Gast #404841
Lesenswert?
• ▲
▼
Wenn das Programmierkabel angeschlossen ist, dann funktioniert es und
wenn ich es abziehe, dann nicht mehr.

Der Fehler sieht wie folgt aus:

Programm funktioniert richt:
In der ersten Zeile wird Welcome in HL dargestellt
anschließend werden die Zahlen in der 2. Reihe dargestellt. (ist die
While-Schleife)

Programm funktioniert nicht:
In der ersten Zeile wird Welcome in HL dargestellt
anschließend werden die Zahlen in der 1. Reihe dargestellt. (ist die
While-Schleife) --> er springt nicht in die zweite Zeile, obwohl nichts
am Quellcode geändert wurde. Wenn der Stecker dann wieder draufgesteckt
wird springt er in die zweite Zeile und stellt dort die Zahlen da.
Ziehe ich den Stecker aus, dann springt er sofort in die obere Zeile.
Diese Fehler ist reproduzierbar.

Antwort schreiben

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.

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.