Forum: Mikrocontroller und Digitale Elektronik ATTINY26 TWI-SLAVE schon wieder


von Alex F. (electronicfox)


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.

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.