Forum: Mikrocontroller und Digitale Elektronik Ist er kaputt ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Reinhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mein µC 4433 setzt mir die Bits des Ports C nicht mehr. Port D wird 
richtig gesetzt . Kann es sein, dass der Controller defekt ist ? Ich 
weiß zwar nicht wie oft ich ihn schon geflasht habe, aber es könnten 
schon 800 bis 1000 mal gewesen sein.
Gibt es eine Fehlermeldung wenn der Speicher defekt ist ?

Hier ein paar Zeilen aus meinem Programm.

ldi r16, 0xff  ;Datenbus als Ausgang konfigurieren
out DDRD, r16
ldi r16, 0x01
out Portd, r16  ;Low addr Byte schicken


ldi r16, 0xff  Hier der Bösewicht !!!
out DDRC, r16
ldi r16,0x13                                        out Portc, r16
nop

Gruß
Reinhard

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Bewertung
0 lesenswert
nicht lesenswert
Hast du AGND und AVCC angeschlossen (siehe Tutorial)?

von Reinhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat geklappt.

Jetzt noch ein Frägelchen vorm schlafen gehen.

Abfrag1:

ldi r16, 0x00
out DDRD, r16
sbis Portd, 0x03

rjmp Abfrag1

Wenn die ersten beiden Bits Portd gesetzt sind wird die Schleife 
verlassen .
Sehe ich das richtig ?

In meinem Prog wird die Schleife nicht verlassen obwohl die ersten 
beinen High sind.




Danke

Reinhard

von Schmittchen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Wenn die ersten beiden Bits Portd gesetzt sind wird die Schleife verlassen. Sehe 
ich das richtig ?
Ja, aber so meinst du das nicht. ;-)

Du bist, nachdem du Anfängerfehler Nr.3 (AVCC/AGND/AREF nicht 
angeschlossen...) umschifft hast, sofort auf Anfängerfehler Nr.2 
gestoßen: Einlesen der anliegenden Pegel an den IC-Beinchen immer durch 
Auslesen des _PIND_-Registers, nicht PORTD!!

Außerdem:
InstructionSet rauskram - SBIS A,b ;wobei b zwischen 0 und 7 liegen 
muß. b gibt die Nummer des Pins an, der abgefragt werden soll.

Das heisst also konkret:
Wenn du die Pegel an PD0 und PD1 abfragen willst ((und nicht nur 
wissen willst, wie _PORTD0/1_ gerade sitzt)), mußt du die 
Abfragebedingung anpassen. Das geht dann nicht mehr mit einem einfachen 
(wohl aber mit einem zweifachen) sbis:
sbis PIND, 0
rjmp Abfrag1
sbis PIND, 1
rjmp Abfrag1

Oder du maskierst die restlichen, uninteressanten Bits aus und prüfst 
auf "0x03":
in   pind, r16    // Pegel an PinD einlesen
andi r16, 0x03    // alle Bits zu Null setzten, außer Bit0 und 1
subi r16, 0x03    // 0x03 abziehen
brne Abfrag1      // wenn jetzt nicht 0 rauskommt, dann liegt an PD0/1 
auch kein high an

(Die 2.Variante ist etwas länger, aber ab einer gewissen Anzahl von 
abzufragenden Eingängen ist diese dann kürzer - Geschmackssache.)

Schmittchen.

von Reinhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hänge immer noch am gleichen Problem.
Beide Bits sind High.
Die Schleife wird jedoch nicht verlassen.

Abfrag1:

         ldi r16, 0x00
   sbis Pind, 0x01
   rjmp Abfrag1
   sbis Pind, 0x02
   rjmp Abfrag1




Gruß
Reinhard

von Reinhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch mal korrigiert.

Abfrag1:

         ldi r16, 0x00
   out DDRD, r16
   sbis Pind, 0x01
   rjmp Abfrag1
   sbis Pind, 0x02
   rjmp Abfrag1

von Schmittchen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Beide Bits sind High.
Welche beiden?
Dein Code fragt PD1 (sbis pind,_1_) und PD2 (sbis pind,_2_) ab. Ich 
denke du willst auf PD0 und PD1 abfragen. Also Code entsprechend 
anpassen.

Schmittchen.

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.