Forum: Mikrocontroller und Digitale Elektronik Einlese-Problem ATTiny2313


von M. P. (phpmysqlfreak)


Angehängte Dateien:

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

von M. P. (phpmysqlfreak)


Angehängte Dateien:

Lesenswert?

Hier sind noch die anderen Dateien des Projekts.

von Karl H. (kbuchegg)


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)

von M. P. (phpmysqlfreak)


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.

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.