Forum: Mikrocontroller und Digitale Elektronik PCINT Probleme bei Atmega48


von Sven (Gast)


Lesenswert?

Hallo habe folgendes Problem,
möchte mich gerne mit den PCINT versuchen und möchte einfach nur LEDs 
durch einen Interrupt an Pin8 an oder aus schalten. Aber irgendwie 
funktioniert es nicht. Wäre um hilfe sehr dankbar.

µC ist ein Atmega48

.include "m48def.inc"      ;Definitionsdatei laden

.def temp = r16
.def leds = r17

.cseg          ;Beginn eines Code-Segmentes
.org 0          ;Startadresse=0

.org PCINT1addr
        rjmp    interrupt       ; Interrupt Overflow Handler

main:
        ldi     temp, LOW(RAMEND)     ; Stackpointer initialisieren
        out     SPL, temp
        ldi     temp, HIGH(RAMEND)
        out     SPH, temp

  ldi  temp, (1<<PCIE1)
  sts  PCICR,temp
  ldi  temp, (1<<PCIF1)
  sts  PCIFR,temp
  ldi  temp, (1<<PCINT8)
  sts  PCMSK1, temp

  ldi  temp, 0x00        ; Port C Auf Eingang
  out  DDRC, temp
        ldi     temp, 0xFF            ; Port D auf Ausgang
        out     DDRD, temp
  out  PORTC, temp        ; Pull-Up Widerstände Port C einschalten

        ldi     leds, 0x00
  out  PORTD, leds

  sei

loop:  rjmp    loop

interrupt:                        ; Interrupt PCINT8 Overflow Handler

  com  leds          ;1er Komplement bilden von leds
  out  PORTD, leds
        reti

mfG

Sven

von Sven (Gast)


Lesenswert?

Sorry eigene Dummheit, hab mal grad den befehl

.org 0x0000
        rjmp    main            ; Reset Handler

vergessen und siehe da jetzt gehts auch.

mfg sven

von Sven (Gast)


Lesenswert?

Hab aber noch eine frage, kann ich auslesen und vergleichen, welcher 
Taster grad gedrückt wurde? Wenn ich die Eingänge PCINT 8 - 11 als PCINT 
bestimme?

Vielleicht kennt ja einer dieses Reaktionsspiel, wo man farben sieht und 
die nachdrücken muss. Sowas in der Art möchten wir für nächstes jahr 
weihnachstmarkt bauen. dafür brauch ich nun 4 Taster, wo ich die 
reihenfolge vergleiche und wollte es auf diesem wege versuchen.

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.