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.
weil mein ATmega komische Sachen gemacht hat, hab ich mal folgendes Testprogramm geschrieben.
Damit habe ich dann mal alle Interrupteingänge durchgetestet.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
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.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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:
Jetzt müßtest du anhand des Datasheet des 128-er die gesetzten Bits klitzeklein kontrollieren, ob das stimmt oder nichtCode:----------------------- 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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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 !!!!
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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.
das hat funktioniert, besten dank
Lesezeichen