Archiv verlassen und diese Seite im Standarddesign anzeigen : INT3 macht probleme
weil mein ATmega komische Sachen gemacht hat, hab ich mal folgendes Testprogramm geschrieben.
$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?
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.
aber bei sämtlichen anderen INT funktioniert das wie vorgesehen, nur nicht beim INT3.
soll das an bascom liegen?
So Apollo, jetzt hast du was zu tun
Dein Programm (config etc) setzt der BasCom folgendermaßen um:
----------------------- 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
Ich weiß nur nicht wie ich da anfangen soll.
Wenn ich im Datenblatt des mega128 z.B. nach r24 suche, findet er nichts.
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
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?
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 !!!! :Haue
Vielleicht hilft das inzwischen
config int3 = falling
Eicra = Eicra Or &H80 ' zu Fuß das "falling" Bit setzen
das hat funktioniert, besten dank
Jetzt hatte ich nur noch den Fehler gemacht, das ich beide Zeilen verwendet hatte. Damit hatte er beide Bits (&HC0) gestetzt, was dann ja einem "rising" entsprechen würde. Jetzt hab ich das glaub ich auch endlich verstanden :)
Ohne der config-zeile gehts jetzt aber richtig.
Jetzt funktioniert der DCF77 decoder auch am INT3.
Es zählt nur der Erfolg. Aber der Bug is mir nicht egal, sowas kostet dich ja Stunden (Nächte)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.