PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 324, INT2 auf Rising / steigend, wie geht das?



kollimann
19.08.2010, 15:33
Hallo, brauch am Atmega 324 den INT2 als steigend, ich bekomm es nicht hin, egal was ich versuch, er geht nur fallend.

Config Int2 = Rising
Enable Int2
Enable Interrupts

On Int2 blabla

so hab ich es erlesen, es geht nicht !

Danke für jeden Ratschlag

for_ro
19.08.2010, 17:06
Könnte ein Fehler in Bascom sein.
Wenn du mit Rising kompilieren kannst, dann schau dir im Simulator doch mal das Register EICRA an, ob die Bits 4 + 5 beide auf 1 gehen, wenn der Config Befehl kommt.
Oder noch besser, lass dir den Inhalt des Registers im Betrieb ausgeben.

kollimann
19.08.2010, 19:28
lass dir den Inhalt des Registers im Betrieb ausgeben

Klingt gut, wie mach ich das?

for_ro
19.08.2010, 19:59
Wenn du eine Verbindung zum PC hast, einfach durch
Print bin(EICRA)
Oder an zwei Ausgangspins über
Portx.y = EICRA.ISC21 bzw EICRA.ISC20

kollimann
19.08.2010, 20:42
Jo PC Verbindung hab ich, werd ich morgen testen.

DANKE

wobei, wenn ich mir die Datei m324pdef.dat anschaue, ich denk ma das diese Datei die Parameter enthällt, und da den Teil INT lese, da steht nix von EIMSK 4 und 5 auf 1................................



ints=3 ; ext ints
int1=INT0,EIMSK.0,4 ; intname, enable register and bit, number of modes
int1m1=LOW LEVEL,EICRA.0-0,EICRA.1-0 ;first mode, bits to set and value
int1m2=CHANGE,EICRA.0-1,EICRA.1-0
int1m3=FALLING,EICRA.0-0,EICRA.1-1
int1m4=RISING,EICRA.0-1,EICRA.1-1
int2=INT1,EIMSK.1,4 ; intname, enable register and bit, number of modes
int2m1=LOW LEVEL,EICRA.2-0,EICRA.3-0 ;first mode, bits to set and value
int2m2=CHANGE,EICRA.2-1,EICRA.3-0
int2m3=FALLING,EICRA.2-0,EICRA.3-1
int2m4=RISING,EICRA.2-1,EICRA.3-1
int3=INT2,EIMSK.2,4 ; intname, enable register and bit, number of modes
int3m1=LOW LEVEL,EICRA.2-0,EICRA.3-0 ;first mode, bits to set and value
int3m2=CHANGE,EICRA.2-1,EICRA.3-0
int3m3=FALLING,EICRA.2-0,EICRA.3-1
int3m4=RISING,EICRA.2-1,EICRA.3-1

für mich gerade viele Fragezeichen................

for_ro
19.08.2010, 21:14
int2=INT1,EIMSK.1,4 ; intname, enable register and bit, number of modes
int2m1=LOW LEVEL,EICRA.2-0,EICRA.3-0 ;first mode, bits to set and value
int2m2=CHANGE,EICRA.2-1,EICRA.3-0
int2m3=FALLING,EICRA.2-0,EICRA.3-1
int2m4=RISING,EICRA.2-1,EICRA.3-1
int3=INT2,EIMSK.2,4 ; intname, enable register and bit, number of modes
int3m1=LOW LEVEL,EICRA.2-0,EICRA.3-0 ;first mode, bits to set and value
int3m2=CHANGE,EICRA.2-1,EICRA.3-0
int3m3=FALLING,EICRA.2-0,EICRA.3-1
int3m4=RISING,EICRA.2-1,EICRA.3-1

für mich gerade viele Fragezeichen................

Ich würde denken, dass du einen Volltreffer gelandet hast.

Bei INT2 (fett) werden die Bits vom Int1 gesetzt, nämlich 2 und 3. Ersetze die fetten Zeilen doch mal durch folgendes:
int3m1=LOW LEVEL,EICRA.4-0,EICRA.5-0 ;first mode, bits to set and value
int3m2=CHANGE,EICRA.4-1,EICRA.5-0
int3m3=FALLING,EICRA.4-0,EICRA.5-1
int3m4=RISING,EICRA.4-1,EICRA.5-1

und probier es noch mal aus.

kollimann
20.08.2010, 09:10
OK, also das Umschreiben hat folgendes bewirkt.
Die Print Ausgabe

bei rising 00010000
bei change 00110000

und es scheint auch praktisch zu funktionieren.

Ich mach mal weitere Tests.

DANKE

for_ro
20.08.2010, 12:01
OK, also das Umschreiben hat folgendes bewirkt.
Die Print Ausgabe

bei rising 00010000
bei change 00110000

Bist du sicher? Sollte eigentlich genau anders herum sein.
bei rising 00110000
bei change 00010000

kollimann
20.08.2010, 13:10
OK nochmal

Rising 00110000
Change 00010000
Falling 00100000

wohl vertippt oder verlesen

So bisherige Test SUPER !

Ich denk das passt so.
Wieder was dazu gelernt.

DANKE

Richard
20.08.2010, 13:22
Hallo, brauch am Atmega 324 den INT2 als steigend, ich bekomm es nicht hin, egal was ich versuch, er geht nur fallend.

Config Int2 = Rising
Enable Int2
Enable Interrupts

On Int2 blabla

so hab ich es erlesen, es geht nicht !

Danke für jeden Ratschlag

Bascom Hilfe Config.....



'we use the int0 interrupt to detect that our slave is addressed

On Int0 Isr_sspi Nosave

'we enable the int0 interrupt

Enable Int0

'we configure the INT0 interrupt to trigger when a falling edge is detected

Config Int0 = Falling

'finally we enabled interrupts

Enable Interrupts

Möglich das bei Dir nur die Reihenfolge der Befehle nicht passt?

Gruß Richard

kollimann
21.08.2010, 10:52
Also ich glaube nicht das es an der Reihenfolge liegt.
Hatte verschiede Reihenfolgen auch versucht.

Die Lösung bzw. das Problem liegt warscheinlich wirklich an dem Fehlerhaften Eintrag in der "conf-Datei", denn nach ändern dieser gehts ja.

Anfangs hatte ich auch schon vermutet das es eine Fehlerhafte "conf-Datei" ist, nur wusste ich nicht wirklich was ich da ändern sollte.
Weitehin hab ich auch festgestellt das der Fehler auch in der "644.dat" vorhanden ist, ich hatte verschiedene Datein verglichen.

Jetzt gehts und nochmals DANKE an euch.

Heiko