Moin,
ich bin noch recht neu mit AVR Programmierung aber hab schon quasi das
Hello-World der AVR-Welt umgesetzt (siehe angehaengtes Bild).
Nun wollte ich von dem Mega32 aus der Bastelkiste auf einen Mega8L
umziehen, eigentlich ja nicht das Problem dachte ich.
Vorher hatte ich an PORTC die 8LEDs haengen und einen HALL-Sensor am ICP
vom Mega32, also PD6.
Nun wollte ich die LEDs an PORTD haengen und den HALL an PB0.
Dafuer muesste ich ja >nur< die Ausgaben der LED-Stellungen aendern,
denn Init vom Capture Pin solle ja gleich bleiben.
Jedoch kann ich den PB0 so oft im Sim rumklicken wie ich will, ich lande
nie in meinem Interrupt-Handler :(
Hier mal das wichtige bevor man sich in meinem verworrenen Code
verlaeuft:
1 | SIGNAL(SIG_INPUT_CAPTURE1)
|
2 | {
|
3 | //[lots of useless code]
|
4 | TCNT1 = 0; // timer reset, das sollte man sehen im Sim
|
5 | //[a lot more of useless code]
|
6 | }
|
7 |
|
8 | int main(void)
|
9 | {
|
10 | sei(); // Interrupt aktivieren
|
11 | TCCR1B = (1<<ICES1) | (1<<CS10); // Input Capture Edge, kein PreScale, kein CTC Mode
|
12 | TIMSK = (1<<TICIE1) | (1<<TOIE1); // Interrupts akivieren, Capture + Overflow
|
13 |
|
14 | DDRB = 0x00; // Set up PortB (MEGA8) da PB0 der ICP ist einfach alle auf EINGANG
|
15 |
|
16 |
|
17 | while(1)
|
18 | {
|
19 | //[code galore]
|
20 | }
|
21 | }
|
Wie gesagt, mitm Mega32 laeuft sowohl aufm AVR als auch im Sim. Da kann
ich den PD6 togglen und sehe das der Timer dann wunderbar auf 0 gesetzt
wird. Mit Mega8 bekomme ich das nicht hin.
Ich les seit 3Std hier im forum und ueberall da wo google mich hinwirft
aber ich bekomms nicht hin.
Waere super falls jemand dazu ne Idee hat.