Hallo,
ich habe ein atmega644p und ein rfm69 und will 2 interrupts mit int2 und
int1 abfangen.
mit int2 lief immer alles gut damit sehe ich wenn meine daten bereit
sind um abgeholt zu werden :)
aber irgendwie wird meine isr routine für int1 immer gleich
mitaktiviert....
so aktiviere ich beide interupts
1 | //PD2 aka INT1 als eingang für interrupt
|
2 | EICRA |= (1<<ISC10)|(1<<ISC11);//steigende taktflanke
|
3 |
|
4 |
|
5 | //PB2 aka INT2 als eingang für interrupt
|
6 | EICRA |= (1<<ISC20)|(1<<ISC21);//steigende taktflanke
|
7 |
|
8 | EIMSK |= (1<<INT1); //aktiviere INt1
|
9 | EIMSK |= (1<<INT2); //aktiviere INt2
|
1 | //code für den ISR von int_vect von DIO1
|
2 | ISR(INT1_vect)
|
3 | {
|
4 | uart_puts_P("int1");
|
5 | uart_puts_P("\n\r");
|
6 | cli();
|
7 | //rfm_switch_mode(0); //0 ist sleep
|
8 | //rfm_switch_mode(4); //4 ist rx mode
|
9 | rfm_reset_by_timer = true;
|
10 | sei();
|
11 |
|
12 | }
|
13 |
|
14 | //code für den ISR von int_vect von DIO0
|
15 | ISR(INT2_vect)
|
16 | {
|
17 | uart_puts_P("int2");
|
18 | uart_puts_P("\n\r");
|
19 | cli();
|
20 | uint8_t rfm_Mode_temp = rfm_Mode; //kopieren wegen votaile
|
21 |
|
22 | if (rfm_Mode_temp == 0)
|
23 | {
|
24 |
|
25 | }
|
26 | else if (rfm_Mode_temp == 1)
|
27 | {
|
28 |
|
29 | }
|
30 | else if (rfm_Mode_temp == 2)
|
31 | {
|
32 |
|
33 | }
|
34 | else if (rfm_Mode_temp == 3)
|
35 | {
|
36 |
|
37 | //power boost auschalten
|
38 | if (rfm_dbi_boost_value)
|
39 | rfm_dbi_boost_aktivate(false);
|
40 | //TXmode nach dem senden in den RX mode
|
41 | rfm_switch_mode(4);
|
42 | }
|
43 | else if (rfm_Mode_temp == 4)
|
44 | {
|
45 | rfm_paket_RSSI = rfm_read_rssi_value();
|
46 | rfm_paket_GAIN = rfm_read_langain();
|
47 | rfm_paket_AFC = rfm_read_afc_value();
|
48 | rfm_paket_CRC = rfm_read_CrcOk();
|
49 | rfm_spi_read_FIFO_burst();
|
50 | }
|
51 | sei();
|
52 | }
|
jemand eien idee ?
MFG Matze
EDIT:
Kleiner nachtrag ich habe das RFM kurz umgestellt das nach int1 kein
signal mehr kommt und in meiner debug serial console bekomme ich
trotzdem noch die ausgabe int1 so als würde es jedes mal auslösen wenn
int2 auslöst.....