Forum: Mikrocontroller und Digitale Elektronik ASM Anfänger - Fehler im Program oder in der Hardware?


von Seppelchen (Gast)


Lesenswert?

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

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

es wäre zweckmäßig, wenn du noch einen Link zur Hardware angäbest.

Ein "Hilfe gebender" Forums-Nutzer mag den vermutlich nicht für dich 
raussuchen, bzw. kennt deine Schaltung sicherlich auswendig ....

: Bearbeitet durch User
von chris (Gast)


Lesenswert?

benutzt du einen externen Takt?

von Seppelchen (Gast)


Angehängte Dateien:

Lesenswert?

Es ist das bekannte Pollin Board:

1. 
http://www.pollin.de/shop/dt/MTY5OTgxOTk-/Bausaetze_Module/Bausaetze/ATMEL_Evaluations_Board_Version_2_0_1_Bausatz.html

mit der Erweiterung:

2. 
http://www.pollin.de/shop/dt/NjQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_ATMEL_Addon_Board_V1_0.html

Anbei noch ein Foto wie die Taster beschaltet sind, jedoch habe ich die 
Kondensatoren nicht eingelötet.

@chris
Nein, interner Takt (4 MHz)

von chris (Gast)


Lesenswert?

versuch mal mit nem Multimeter die Spannung bei entsprechend gedrückten 
Taster zu messen ob nicht irgendwo eine Verbindung besteht.

mmh laut Schaltplan hat das Board aber nen bestückten ext. Taktgeber der 
nicht trennbar ist und laut Plan ist PB6/7 mit nichts anderen verbunden 
als mit dem Quarz es gehen keine Verbindungen wo anders hin..... also 
mal den Schaltplan lesen bitte

http://www.pollin.de/shop/downloads/D810038B.PDF

seite 6

von Seppelchen (Gast)


Lesenswert?

OK, stimmt.
Die Taster liegen jetzt auf PORT C...

Habe aber gerade meinen Fehler gefunden: Da ich den kompletten Port C 
ausgewertet habe und nur die 4 Tasten angschlossen waren, lag an den 
Pins 4 und 5 kein definiertes Signal an...

Jetzt gehts wie erwartet :D Peinlicher Fehler.  :)

Hätte aber nicht gedacht das sich das so äußert, da der Zustand der 
LED's sich nur geändert hat wenn eine Taste gedrückt wurde. Vielleicht 
irgendwelche induktiven Auswirkungen/Störungen die beim drücken der 
Tasten entstehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.