ATTINY26 TWI-SLAVE schon wieder

#1282805
Lesenswert?

Hallo!
Ich arbeite seit Tagen an diesem Quellcode rum und habe nach längeren 
Umschreiben endlich zum laufen gebracht. Die Ausgabe auf die LEDs 
funktioniert wunderbar, nur komm ich nicht drauf, wie man die PORTs 
einlesen kann und danach über TWI abzufragen.

So schaut der CODE aus:
1
.include "tn26def.inc"        ; Deklarationen für ATtiny26
2

3
.equ  twi_addr = $90         ; TWI Adresse
4

5

6
.cseg                ; Programm-Flash
7
    rjmp  init        ; Reset-Einsprung
8

9
.org  0x007            ; USI Start Interrupt
10
    rjmp  usi_start
11

12
.org  0x008            ; USI Overflow Interrupt
13
    rjmp  usi_ovf
14

15

16
.org  0x00C            ; Interrupteinsprünge übergehen
17

18
init:  ldi    R16, RAMEND      ; Stapel anlegen
19
    out    SP, R16
20

21
    ldi    R16, 0b11111111    ; PortA als Ausgang
22
    out    DDRA, R16
23

24
    ; USI Control Register
25
    ldi    R16, (1 << USISIE) | (1 << USIOIE) | (1 << USIWM1) | (1 << USIWM0) | (1 << USICS1) | (0 << USICS1)
26
    out    USICR, R16
27

28
    sei              ; Interrupts aktivieren
29

30

31

32
loop:  
33
 
34
rjmp  loop        ; Endlosschleife
35

36

37

38
usi_start:
39
    in    R16, USISR      ; Start Condition Interrupt Flag zurücksetzen
40
    ori    R16, (1 << USISIF)
41
    out    USISR, R16
42

43
    reti            ; Kehre zurück
44

45
usi_ovf:
46
    in    R16, USIDR
47
  lsr r16
48
  lsr r16
49
    out    PORTA, R16
50

51
    reti            ; Kehre zurück

Nun möchte ich, wenn es möglich ist, an den freien B-PINs anschließen 
und mit der Adresse $91 auslesen, nur komm ich nicht drauf wie man es 
macht.

Könnt ja auch einen PCF nehmen, nur sind die schon mittlerweile 
Abgekündigt ;-) und dazu lernen möchte man ja auch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren