Bisher habe ich mit dem AVR Tiny24/44/84 erfolgreich gearbeitet.
Da ich für mein neues Projekt ein paar mehr I/O-Ports, aber keinen
ADC brauche, erschien mir der AVR Tiny4313 als gute Wahl.
Schön ist auch, dass man den Tiny4313 im Gegesatz zu den Tiny24/44/84
direkt auf der STK500 testen kann:
Normale I/O-Verarbeitung, USART, Timer0 und Timer1 sind erfolgreich
getestet, aber ich kriege die external Interrupts nicht hin!
Nacheinander habe ich Ext-INT1 und den PC-Int2 getestet.
Nach den ersten Compiler-Errors habe ich schon gekuugelt, dass die
tn4313def.inc nicht ganz sauber ist, daher noch ein paar #DEFINEs:
1 | ; für GIMSK:
|
2 | #define PCIE1 3
|
3 | #define PCIE2 4
|
4 | #define PCIE0 5
|
5 |
|
6 | PortDini:
|
7 | ldi Tmp0, 0b00000010 ; PortD: 0/1: RXD/TXD,
|
8 | out DDRD, Tmp0 ; 2...6: Input, 7 n/a
|
9 | ldi Tmp0, 0b00000000 ;
|
10 | out PortD, Tmp0 ;
|
11 |
|
12 |
|
13 | PCint2ini:
|
14 | in Tmp0, GIMSK
|
15 | ori Tmp0, 1 << PCIE2 ; PCIE2 Enable = GIMSK-Bit4
|
16 | out GIMSK, Tmp0 ; PC-IRQ2 = ON
|
17 |
|
18 | in Tmp0, PCMSK2
|
19 | ori Tmp0, (1 << PCINT16) | (1 << PCINT15) | (1 << PCINT14) | (1 << PCINT13)
|
20 | out PCMSK2, Tmp0 ; PCINT13...PCINT16 = ON
|
21 |
|
22 |
|
23 | Eint1_ini:
|
24 | in Tmp0, MCUCR
|
25 | ori Tmp0, 1 << ISC11 ; fallende Flanke für INT1 (PinD3)
|
26 | out MCUCR, Tmp0
|
27 |
|
28 | in Tmp0, GIMSK
|
29 | ori Tmp0, 1 << INT1 ; INT1 Enable = GIMSK-Bit7 (0b10000000)
|
30 | out GIMSK, Tmp0 ; INT1-IRQ ON
|
31 |
|
32 | sei ; Interrupts freigegeben!
|
Was fehlt denn noch, damit die Interrupts auch angesprungen
werden???????