mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einlese-Problem ATTiny2313


Autor: Marcel Papst (phpmysqlfreak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Marcel Papst (phpmysqlfreak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier sind noch die anderen Dateien des Projekts.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.equ ADDR_PORT  = PIND
.equ ADDR_PORT0  = PORTD
.equ ADDR_DDR  = DDRD

....

  ;; Adresse auslesen (liegt danach in temp1)
  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)

Autor: Marcel Papst (phpmysqlfreak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> .equ ADDR_PORT  = PIND
> .equ ADDR_PORT0  = PORTD
> .equ ADDR_DDR  = DDRD
> 
> ....
> 
>   ;; Adresse auslesen (liegt danach in temp1)
>   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)

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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.