Einlese-Problem ATTiny2313

OP #2031646
Lesenswert?

Hallo bzw. Guten Morgen^^

ich hänge seit ca. 2 Tagen an einem Problem, welches ich einfach nicht 
behoben kriege.

Bei dem Projekt handelt es sich um einen TWI/LCD-Interface basiert auf 
einem
AtTiny2313-20PU.

Die Anzeige auf dem LCD ist kein Problem - dort soll nach dem Start für 
ca. 2 Sekunden die TWI-Adresse angezeigt, und danach das eigentliche 
"Modul" gestartet werden. *Bisher sind aber nur TWI und LCD 
implementiert* - sonst nichts. (Also nur Anzeige der Adresse.)

Der Schaltplan ist nur eine grobe Darstellung - gerade mit Paint gemalt, 
weil dieser Rechner nicht bestückt. Die Problem-Stelle des Bildes ist 
eine 2x3-polige Stiftleiste für Jumper gegen GND. Hardware-Technisch ist 
alles mehrfach kontrolliert und korrekt. Software-Technisch laut 
Debugger ebenfalls. - *Der Kontroller zeigt aber bei jedem Zustand der 
Jumper immer 000 als Adresse an.* - Nur kann ich mir nicht erklären, aus 
welchem Grund.

Findet einer von euch einen Software-Fehler während des Einlesens?

PS: Der Code ist etwas wirr, aber hoffentlich ausreichend kommentiert.
Es geht mir erstmal nur um die Funktion - hinterher wird optimiert.
Die im Schaltplan fehlenden Abblock-Kondensatoren zwischen GND und VCC 
sind natürlich verbaut. - Habe beim nachzeichnen gerade nur nicht daran 
gedacht.

Gruß,
Marcel
Angehängte Dateien:
#2031662
Lesenswert?

1
.equ ADDR_PORT  = PIND
2
.equ ADDR_PORT0  = PORTD
3
.equ ADDR_DDR  = DDRD
4

5
....
6

7
  ;; Adresse auslesen (liegt danach in temp1)
8
  in temp1, ADDR_PORT


Eingelesen wird vom Pin Register, nicht vom Port Register. Eine 
Unterscheidung der beiden nur dadurch dass das eine ein angehängtes O 
(für Output) hat ist IMHO zu fehleranfällig. Nenn das eine ruhig 
ADDR_PIN und das andere ADDR_PORT. Dann ist es augenfälliger, wenn du 
den Falschen benutzt. (Ich habs auch nur durch Zufall gesehen)
OP #2031730
Lesenswert?

Karl heinz Buchegger schrieb:
>
1
> .equ ADDR_PORT  = PIND
2
> .equ ADDR_PORT0  = PORTD
3
> .equ ADDR_DDR  = DDRD
4
> 
5
> ....
6
> 
7
>   ;; Adresse auslesen (liegt danach in temp1)
8
>   in temp1, ADDR_PORT
9
>
>
>
> Eingelesen wird vom Pin Register, nicht vom Port Register. Eine
> Unterscheidung der beiden nur dadurch dass das eine ein angehängtes O
> (für Output) hat ist IMHO zu fehleranfällig. Nenn das eine ruhig
> ADDR_PIN und das andere ADDR_PORT. Dann ist es augenfälliger, wenn du
> den Falschen benutzt. (Ich habs auch nur durch Zufall gesehen)

Habe es Code-Technisch erstmal geändert, aber wie vorher wird temp1 mit 
den Daten von PIND gefüllt. - Eine Änderung in der Ausführung konnte ich 
nicht feststellen.
Die Beschaltung mit den Pullups (wenn auch vergleichsmäßig niederohmig) 
und den Jumpern ist aber korrekt, oder? - Genau so ist es auch bei RST 
gelöst.

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