mikrocontroller.net

Forum: Compiler & IDEs Problem: Reset bei Ext. Interrupt (avrgcc, m8)


Autor: lenard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
mein Programm resettet sich bei externem Interrupt (INT1, PD3, Pin 5). 
Ich habe mir den Code im Disassembler angeschaut, und die 
Interruptvektoren stehen falsch. Ich benutze AVRStudio 4.13 build 557 
mit WinAVR 20070525.

Quellcode:

ISR(INT1_vect)
{
  TCCR1B = 0;  //stop counter
}

int main(void)
{
  cli();      //erstmal interrupts aus

  OSCCAL = 0xAB;

  TCCR1A = 0;
  TCCR1B = 1;  //no prescaler; 2=pre/8 TCNT1 counter-register

  MCUCR = (1<<ISC10);
  GICR = (1<<INT1);

  sei();
  while(true)      //endlosschleife über das if
  if( zaehler == 30 )
  { ... }
}

Dis-ASM:
+00000000:   C012        RJMP    PC+0x0013        Relative jump
+00000001:   C02C        RJMP    PC+0x002D        Relative jump
+00000002:   C02C        RJMP    PC+0x002D        Relative jump
+00000003:   C02A        RJMP    PC+0x002B        Relative jump
+00000004:   C029        RJMP    PC+0x002A        Relative jump
+00000005:   C028        RJMP    PC+0x0029        Relative jump
...
+0000002E:   CFD1        RJMP    PC-0x002E        Relative jump
@0000002F: __vector_2
...

wenn ein Interrupt auftritt (ich also PIND Bit3 im Simulator anklicken) 
springt der Prozessor an Adresse 0x04 (TIMER2 OVF laut Datenblatt) ?!?
Wenn ich den Interruptvektor auf TIMER2_OVF_vect ändere, läuft das 
Programm wie erwartet.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast Du möglicherweise einen falschen Controller für die Simulation 
angegeben. Überprüf mal Deine Einstellungen. Das sieht so aus, als ob da 
ein AVR mit mehr als 8 KiB Flash eingestellt ist...

Autor: lenard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dachte ich auch schon, aber eingestellt ist der korrekte "atmega8".

Autor: lenard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry für den Doppelpost:
hier die compilerausgabe:

avr-gcc.exe  -mmcu=atmega8 -Wall -gdwarf-2 
-DF_CPU=4000000UL -Os -fsigned-char -MD -MP -MT testprojekt.o -MF 
dep/testprojekt.o.d  -c  ../testprojekt.c
avr-gcc.exe -mmcu=atmega8  testprojekt.o     -o testprojekt.elf
avr-objcopy -O ihex -R .eeprom  testprojekt.elf testprojekt.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" 
--change-section-lma .eeprom=0 --no-change-warnings -O ihex 
testprojekt.elf testprojekt.eep || exit 0
d:\WinAVR-20070525\bin\avr-objcopy.exe: there are no sections to be 
copied!

AVR Memory Usage
----------------
Device: atmega8

Program:     514 bytes (6.3% Full)
(.text + .data + .bootloader)

Data:         94 bytes (9.2% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...

Autor: lenard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry für den Dreifachpost:

Natürlich, im Simulator war der Mega16 eingestellt :(
Man muss natürlich wissen, das Projekt und Simulator nicht dieselbe 
Konfiguration verwenden (müssen).
Jetzt geht es in jedem Fall. Vielen Dank für die Hilfe!

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.