Ok danke habe es durch gearbeitet und wollte es dann doch mit PCINT3,
falls es doch länger nicht gebraucht wird habe mich an das tutorial
gehalten, aber komme zum selben ergebniss.
1 | #include <avr/io.h>
|
2 | #include <avr/sleep.h>
|
3 | #include <avr/wdt.h>
|
4 | #include <avr/interrupt.h>
|
5 | #include <util/delay.h>
|
6 |
|
7 |
|
8 | ISR(PCINT0_vect)
|
9 | {}
|
10 |
|
11 | //Software SPI Sende-Routine
|
12 | void send(unsigned char Data)
|
13 | {
|
14 |
|
15 | uint8_t MSB, a;
|
16 | MSB = 0x80;
|
17 |
|
18 | PORTB &= ~(1<<PB1);
|
19 |
|
20 | for( a = 0 ; a<8 ;a++)
|
21 | {
|
22 |
|
23 | if(MSB & Data)
|
24 | {
|
25 | PORTB |= (1<<PB0);
|
26 | PORTB |=(1<<PB2);
|
27 | }//if Ende
|
28 |
|
29 | else
|
30 | {
|
31 | PORTB &= ~(1<<PB0);//MOSI
|
32 | PORTB |= (1<<PB2);//CLK HIGH
|
33 | }//else ende
|
34 |
|
35 | PORTB &= ~(1<<PB2);//CLK HIGH
|
36 |
|
37 | MSB >>= 1; //MSB nach rechts schieben
|
38 |
|
39 | }//for ende
|
40 |
|
41 | PORTB |=(1<<PB1);
|
42 | }
|
43 |
|
44 | int main(void)
|
45 | {
|
46 |
|
47 | DDRB |= (1<<PB2)|(1<<PB1)|(1<<PB0);
|
48 | PORTB &= ~(1<<PB2)|(1<<PB0);
|
49 | PORTB |= (1<<PB1);
|
50 |
|
51 | //PCINT3 (PB3) Init
|
52 | DDRB &=~(1<<PB3);
|
53 | PORTB |= (1<<PB3);
|
54 | MCUCR |= (1<<ISC00);
|
55 | GIMSK |= (1<<PCIE);
|
56 | PCMSK |= (1<<PCINT3);
|
57 |
|
58 | //Sleep-mode Init
|
59 | MCUCR |= (1<<SE)|(1<<SM1);
|
60 |
|
61 | //Interrupt aktivieren
|
62 | sei();
|
63 |
|
64 |
|
65 | //Endloss Schleife
|
66 | while(1)
|
67 | {
|
68 | //Schlafen
|
69 | //sleep_cpu();
|
70 | //Hier aufwachen wenn am PCINT3 etwas passiert
|
71 |
|
72 |
|
73 | PORTB |= (1<<PB2);
|
74 | uint16_t result; //Hilfsvariable für Dummy wert
|
75 |
|
76 | ADMUX = (1<<MUX1);
|
77 |
|
78 | ADCSRA |= (1<<ADPS2) | (1<<ADPS1)| (1<<ADPS0); //ein | hinzugefügt
|
79 | ADCSRA |= (1<<ADEN);
|
80 | ADCSRA |= (1<<ADSC);
|
81 | while (ADCSRA & (1<<ADSC) ) {}
|
82 |
|
83 | result = ADCW;
|
84 |
|
85 | ADCSRA &= ~(1<<ADEN);
|
86 | PORTB |=(1<<PB2);
|
87 |
|
88 | send(result);//Sende Funktion
|
89 |
|
90 | }//while ende
|
91 | return 0;
|
92 | }//main Ende
|
danke für den hinweis mit der ISR und sei()
mfg mike