hi, ich verzweifel hier gerade.... ich arbeite zum probieren und testen
meist mit einem at90can128, nun wollte ich eben ne kleinigkeit auf nen
tiny spielen und der versuch dauert schon 4 stunden -.-
problem:
der tiny bleibt in der interrupt schleife hängen und das wars dann.
in der schleife wird "count" hochgezählt. bei count größer 10 müsste er
in der main schleife eine led einschalten. in der simulation wird der
wert count auch hochgezählt aber dann, in der simulation schon, wird der
wert einfach ignoriert und die isr weiter ausgeführt... das klappt sonst
immer...gibts da was besonderes beim tiny???
danke schonmal
1 | #include <avr/io.h>
|
2 |
|
3 | #include <stdio.h>
|
4 | #include <util/delay.h>
|
5 | #define F_CPU 8000000UL
|
6 | #include <avr/interrupt.h>
|
7 |
|
8 | #define SETBIT(ADRESS, BIT) (ADRESS |=(1<<BIT)) //Makro zum Setzen eines Bits
|
9 | #define CLEARBIT(ADRESS, BIT) (ADRESS &=~(1<<BIT)) //Makro zum Loeschen eines Bits
|
10 | #define CHECKBIT(ADRESS, BIT) (ADRESS &(1<<BIT)) //Makro zum Prfen eines Bits
|
11 |
|
12 | unsigned int leerlauf;
|
13 | unsigned int count =0;
|
14 | unsigned int mpx =0;
|
15 | unsigned char z1=0;
|
16 | unsigned char z2=0;
|
17 | unsigned char ziffer[]={63,6,91,79,102,109,125,7,127,111};
|
18 |
|
19 | unsigned char merker=0;
|
20 | unsigned char spalte;
|
21 | unsigned char sekunde=0;
|
22 | unsigned char zeit=90;
|
23 |
|
24 |
|
25 | ISR(TIMER0_OVF_vect)
|
26 | {
|
27 | TCNT0 = 150; // Startwert nachladen, 0xFA
|
28 | // 250* 16us=4ms bis Overflow
|
29 | count++;
|
30 |
|
31 | }
|
32 |
|
33 | void init(void)
|
34 |
|
35 | {
|
36 | DDRA=0xff;
|
37 | DDRB=0xff; // -> PORTB 0-6 = 7-Segment a-f | PORTB 7 = halbe stelle
|
38 | DDRD=0xff ; // -> PD0 -> Stelle 1, PD1 -> Stelle 2
|
39 | // -> PD 5:7 -> Taster
|
40 |
|
41 | TCCR0B = 0x01; // Timerstart
|
42 | TCNT0 = 150; // Startwert nachladen, 0xFA
|
43 | // 250* 64us=16ms bis Overflow
|
44 |
|
45 |
|
46 | SREG = (1<<7); // Allgemeine Interruptfreigabe;
|
47 |
|
48 | TIMSK=(1<<TOIE0); // Freigabe Timer0 Iterrupt
|
49 | }
|
50 |
|
51 |
|
52 | int main(void)
|
53 | {
|
54 |
|
55 | init();
|
56 |
|
57 | while(1)
|
58 | {
|
59 | if(count>=10)
|
60 | {
|
61 | SETBIT(PIND,PIND5);
|
62 | }
|
63 |
|
64 | leerlauf++;
|
65 |
|
66 | }
|
67 |
|
68 |
|
69 |
|
70 | }
|