www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ist er kaputt ?


Autor: Reinhard (Gast)
Datum:

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: Reinhard (Gast)
Datum:

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

Autor: Schmittchen (Gast)
Datum:

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.

Autor: Reinhard (Gast)
Datum:

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

Autor: Reinhard (Gast)
Datum:

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

Autor: Schmittchen (Gast)
Datum:

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.