mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmega644 frage


Autor: jamest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi!
Anfängerfrage:
ldi temp1, 0xFF    ; Port D = Ausgang
out PORTD, temp1

out DDRD, temp1

Ich will einfach nur nen Port meines Atmega644 auf 5 V bringen. Mit dem 
Code werden doch die interenen Pullup Widerstände aktiviert und ich 
müsste 5V messen können oder? Aber ich bekomme nur 0,8V ? Muss ich nen 
externen Pullup ranbauen?

Gruß

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem Code sind die Pins auf Ausgang (DDRD) und auf Vcc geschaltet 
(5V).
Was hängt den am Ausgang?
Bzw wie sieht dein vollständiger Code aus?

Autor: jamest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.include "m644def.inc"
.org 0x0
rjmp start

.cseg
.equ adresse = RAMEND
.def temp1 = r16

start:
ldi r17, high(adresse)
out SPH, r17

ldi r17, low(adresse)
out SPL, r17


ldi temp1, 0xFF    ; Port D = Ausgang
out PORTD, temp1

out DDRD, temp1


loop:
rjmp loop

Das ist der gesamte Code und der Ausgang ist unbeschaltet... Bin 
ratlos..

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Code werden doch die interenen Pullup Widerstände aktiviert

Nein.

>und ich müsste 5V messen können oder?

Das schon. Falls nicht im Programm etwas folgt, das die Einstellungen 
rückgängig macht

Sieh dir mal die Bedeutung der einzelnen Register eines Ports an.

MfG Spess

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das ist der gesamte Code und der Ausgang ist unbeschaltet... Bin
>ratlos..

Entweder falsch gemessen oder falsches Programm geflasht.

>.equ adresse = RAMEND

>start:
>ldi r17, high(adresse)
>out SPH, r17

>ldi r17, low(adresse)
>out SPL, r17

Einfacher:

>ldi r17, high(RAMEND)
>out SPH, r17

>ldi r17, low(RAMEND)
>out SPL, r17

Und entscheide dich, ob du dieses temp-Gedödel oder 
Registerbezeichnungen benutzt. Das Vermischen ist tödlich.

MfG Spess

Autor: jamest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe nun einmal eine LED an den Ausgang rangehängt und was passiert: 
die LED blinkt in schnellem Takt. Daher die 0,8V. Warum frage ich mich? 
Kann doch bei dem Code gar nicht sein...

Erst dachte ich, da wäre irgendein PWM Modus aktiv. Aber ich hab im Code 
s.o. ja überhaupt nichts derartiges eingestellt und auch an Ausgängen 
die nichts mit PWM zu tun haben das gleiche Phänomen.

Zweiter Gedanke Watchdog. Aber auch der ist deaktiviert.

Kann es sein, dass mein µC irgendwie Schrott ist? Ich hab einen Ausgang 
mit 5 mA belastet. War das vllt zuviel?

Autor: jamest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh sorry jetz hab ichs. Es war eine kalte lötstelle am Quarz... sowas 
blödes

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.