Hallo,
der unten aufgeführte Code läuft nicht korrekt auf dem Pollin Addon
Board mit einem ATmega8. Die Kondensatoren an den Tastern sind nicht
eingelötet. Bis 30 Sekunden nach einschalten der Spannungsversorgung
funktioniert alles. Drückt man die erste Taste, geht die erste LED an
usw...
Angeschlossen ist alles so (Taster aktiv HIGH mit externem Pull Down und
LED über ULN2803):
Taste 1 = PB0
...
Taste 4 = PB3
Led 1 = PD0
...
Led 4 = PD3
Drückt man nach den 30 Sekunden die dritte Taste, geht die Led an PD6
zusätzlich an. Genauso geht bei der vierten Taste die LED an PD7 mit an.
Der Fehler tritt an der ersten und zweiten Taste nicht auf. Beseitigen
lässt sich der Fehler nur durch abklemmen der Spannungsversorgung, ein
Reset des ATmega 8 bringt nichts. Die Pins PD6 und PD7 des ATmega8
liegen nach dem Fehler auf 5V.
Wo liegt der Fehler? Bin momentan echt ratlos...
Schonmal Danke für eure Hilfe :)
(Ja der Stackpointer ist unnötig)
1 | .include "m8def.inc"
|
2 | ;******************************
|
3 | .def temp1 = r16
|
4 | ;******************************
|
5 | .equ key_DDR = DDRB
|
6 | .equ key_PIN = PINB
|
7 | .equ key_PORT = PORTB
|
8 |
|
9 | .equ led_DDR = DDRD
|
10 | .equ led_PIN = PIND
|
11 | .equ led_PORT = PORTD
|
12 | ;******************************
|
13 | .org 0x0000
|
14 | rjmp reset
|
15 | .org INT_VECTORS_SIZE
|
16 |
|
17 | reset:
|
18 | ldi temp1, HIGH(RAMEND)
|
19 | out SPH, temp1
|
20 | ldi temp1, LOW(RAMEND)
|
21 | out SPL, temp1
|
22 |
|
23 | ldi temp1, $00
|
24 | out key_DDR, temp1
|
25 |
|
26 | ldi temp1, $FF
|
27 | out led_DDR, temp1
|
28 | clr temp1
|
29 |
|
30 | main:
|
31 | in temp1, key_PIN
|
32 | out led_PORT, temp1
|
33 |
|
34 | rjmp main
|