- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: mega128 Interrupt

  1. #1
    Neuer Benutzer
    Registriert seit
    02.07.2004
    Ort
    Grinzens
    Alter
    47
    Beiträge
    4

    mega128 Interrupt

    Anzeige

    E-Bike
    Hi

    Ich hab ein kleines (grosses) "anfänger" Problem...
    Wenn ich im AVR-Studio mein mini Programm teste bekomme ich diese Meldung:
    AVR Simulator: Invalid opcode 0xffff at address 0x00f002
    über einen Int0 sollte er mir in ein unterprogramm springen und das abarbeiten.
    Aber er springt auf den rjmp reset und nicht auf den darunterliegenden....
    Ich hoffe das ich mein Problem relativ verständlich beschrieben habe, hab erst vor ein paar tagen mit dem programmieren lernen begonnen...
    bitte helft mir....

    Schöne grüße CMREX

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    zeig mal ein wenig von deinem Programm, sonst kann hier keiner was konkretes sagen.

    Aber ein Tipp, wo stehen die .org und wo die labels, das wurde auch schon mal gerne vertauscht, und dann stimmt die Adresse nicht mehr.

    Es hört sich zumindest so nach ASM an, warum dann nicht ins neue ASM-Forum ?!

  3. #3
    Neuer Benutzer
    Registriert seit
    02.07.2004
    Ort
    Grinzens
    Alter
    47
    Beiträge
    4
    Hi

    Ich denk mal dass das so passen sollte oder ? :

    include "m128def.inc"
    .def temp = r16
    .def test = r18
    .def count = r19
    rjmp reset ; Reset Händler
    rjmp ext_int0 ; IRQ0 Handler
    reti ; IRQ0 Handler
    reti ; Timer1 Capture Handler
    reti ; Timer1 compare Handler
    reti ; Timer1 Overflow Handler
    reti ; Timer0 Overflow Handler
    reti ; SPI Transfer Complete Handler
    reti ; UART RX Complete HAndler RXCIE
    reti ; UDR Empty Handler
    reti ; UART TX Complete Handler
    reti ; ADC Conversion Complete Interrupt Händler
    reti ; EEPROM Ready Händler
    reti ; Analog Comparator Handler


    reset:


    ldi temp, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
    out SPL, temp
    ldi temp, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse
    out SPH, temp
    ldi test, 1<<int0

    ldi temp, 0b00000000 ;
    out ddrb,temp ; pins Port D als eingänge
    ldi temp, 1<<int0 ; 0100 0000
    out gimsk, test

    ldi test, 0b00000011
    out mcucr, test

    sei

    loop:
    inc count
    nop
    nop
    nop
    nop
    nop
    nop
    rjmp loop


    sub1:
    ; hier könnten ein paar Befehle stehen
    ; sub2 aufrufen
    ; hier könnten auch Befehle stehen
    ret ; wieder zurück

    sub2:
    ldi r17, 0b01001001 ; hier stehen normalerweise die Befehle,
    com r17
    ; die in sub2 ausgeführt werden sollen
    ret ; wieder zurück

    ext_int0:
    ret

    ich habe die meisten teile aus diversen tutorials ....

    ... Harald

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Hmm, ich geb dir mal den Tipp die Vektortabelle für die Interupts aus dem entsprechendem Datenblatt zu nehmen und dir gegebenfalls mal anzusehen, wieviele Worte ein jmp / rjmp / reti im Flash verbraucht.
    genau da dürfte nämlich der "Hund begraben liegen".

    Ach ja, Interupt Routinen beendet man im übrigen mit reti und nicht mit ret.

    Grüße,

    da Hanni.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    ja und wie oben schon gesagt, gehen da ein paar .org (aber mind. einer) ab die dem Assembler sagen wo die Codezeile im Speicher hin soll, dann kommt man nicht durcheinander, wenn man später wieder reinschaut.

    zB. sollte ein
    Code:
    .org   INT_VECTORS_SIZE
    nach der IRQ-Tabelle nicht schaden, dann muss man nicht alle Jumps selber reinbauen, und man verzählt sich nicht.


    Und ausserdem heisst es nicht Händler, hat nix mit handeln zu tun, ist ein engl. Begriff das handlen, spricht man nur so aus.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress