-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: INT3 macht probleme

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.01.2005
    Beiträge
    42

    INT3 macht probleme

    Anzeige

    weil mein ATmega komische Sachen gemacht hat, hab ich mal folgendes Testprogramm geschrieben.
    Code:
    $crystal = 16000000
    $regfile = "M128def.dat"
    $baud = 9600
    
    Ddrg = 7
    Porta = 255
    Portb = 255
    Portc = 255
    Portd = 255
    Porte = 255
    Portf = 255
    Portg = 7
    
    Config Int3 = Falling
    Enable Interrupts
    Enable Int3
    On Int3 Zaehle
    
    Dim I As Byte
    
    Do
    Nop
    Loop
    
    End
    
    Zaehle:
       Incr I
       Print I
    Return
    Damit habe ich dann mal alle Interrupteingänge durchgetestet.
    auf INT3 scheint er das "Config Int3 = Falling" zu ignorieren.
    Der Interrupt löst bei beiden flanken aus.
    bei den anderen Interrupteingängem wird nur bei der fallenden Flanke ausgelöst.
    Hab ich da irgendwo nen Denkfehler, oder ist das bei INT3 so?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Bei der Flanken/Level einstellung bin ich auch am diskutieren mit dem BasCom. Er hat da eigene Vorstellungen, was die INT können und was nicht. Ev. das neue Update vom Bascom ?
    Auf jeden Fall Vorsicht damit.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.01.2005
    Beiträge
    42
    aber bei sämtlichen anderen INT funktioniert das wie vorgesehen, nur nicht beim INT3.
    soll das an Bascom liegen?

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    So Apollo, jetzt hast du was zu tun

    Dein Programm (config etc) setzt der Bascom folgendermaßen um:

    Code:
    ----------------------- Ddrg = 7
    00C8		LDI	r24,$07
    00CA		STS	DDRG,r24
    
    Porta = 255
    00CE		LDI	r24,$FF
    00D0		OUT	PORTA,r24
    
    Portb = 255
    00D2		LDI	r24,$FF
    00D4		OUT	PORTB,r24
    
    Portc = 255
    00D6		LDI	r24,$FF
    00D8		OUT	PORTC,r24
    
    Portd = 255
    00DA		LDI	r24,$FF
    00DC		OUT	PORTD,r24
    
    Porte = 255
    00DE		LDI	r24,$FF
    00E0		OUT	PORTE,r24
    
    Portf = 255
    00E2		LDI	r24,$FF
    00E4		STS	PORTF,r24
    
    Portg = 7
    00E8		LDI	r24,$07
    00EA		STS	PORTG,r24
    
    Config Int3 = Falling
    00EE		LDS	r24,EICRA
    00F2		ANDI	r24,$3F            das ist interessant
    00F4		ORI	r24,$20           ebenfalls
    00F6		STS	EICRA,r24
    
    Enable Interrupts
    00FA		SEI                               
    
    Enable Int3
    00FC		IN	r24,EIMSK
    00FE		ORI	r24,$08          enable int3
    0100		OUT	EIMSK,r24
    
    ; --------- DO / LOOP -------------------------
    	L_$0102:
    0102		NOP
    0104		JMP	L_$0102
    0108
    ; ---------- END --------------------------
    	L_$010A:
    010A		RJMP	L_$010A
    Jetzt müßtest du anhand des Datasheet des 128-er die gesetzten Bits klitzeklein kontrollieren, ob das stimmt oder nicht
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.01.2005
    Beiträge
    42
    Ich weiß nur nicht wie ich da anfangen soll.
    Wenn ich im Datenblatt des mega128 z.B. nach r24 suche, findet er nichts.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ah so, seh' schon, na ja, egal, ich hab selber nachgesehen:

    Bei CONFIG INT3 = falling
    setzt er im Register EICRA die die Flags für "FALLING Edge"

    Also hat der Bascom keine schuld. Da ich auch nicht glaube, daß der Mega so einen Fehler bringt, mußt du Dich wahrscheinlich getäuscht haben oder es is was anderes
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.01.2005
    Beiträge
    42
    getäuscht, ne. Hab das mehrmals durchprobiert. Ich hab da nen DCF-Empfänger dran. Der zählt an INT3 jede sekunde um 2 weiter. An allen anderen INT funktionierts ja richtig.
    Kann das mit der 2-ten UART zusammenhängen?

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Was soll ich sagen, bei Int0-3 gibt es lt. Sheet keine Funktion für Falling UND Rising. nur für 4-7.
    Zusammenhang mit sonstwas seh ich eigentlich nicht

    Aber ich seh grad, du hast recht, int3 ist ja der 4. ( )
    Den setzt er ja garnicht, also arbeitet er auf Low Level , d,h, er kann sich leicht verzäheln

    UUUUiiiiiiiiiii das is ja 'n BUG vom Bascom !!!!
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Vielleicht hilft das inzwischen

    config int3 = falling

    Eicra = Eicra Or &H80 ' zu Fuß das "falling" Bit setzen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    17.01.2005
    Beiträge
    42
    das hat funktioniert, besten dank

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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