www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Portkonfiguration ATmega32


Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, allerseits!

Ich habe ein Problem mit der Portkonfiguration bei einem Mega32. PORTC
ist über DDRC=0x01111111 bis auf C7 als Ausgang konfiguriert. Schalte
ich aber über PORTC.2=0; den Ausgang ab, so geht der Pegel dort zwar
auf Low, scheint aber hochohmig zu werden (sagt zumindest ein Blick
aufs Oszi und Anfassen mit der Hand). Ich nehme an, dass die
Portfunktion durch irgendeine andere Einstellung überlagert wird, ich
meine aber, schon so ziemlich alles ausgeschaltet zu haben. Hier ein
Auszug aus meiner Konfigurationsdatei:

TCCR0=0;
OCR0=0;
TCCR2=0;
TCNT2=0;
TWCR=0;

MCUCR=2;
MCUCSR=0;

OCR2=0;
ASSR=0;

OCR1AH, AL, BH, BL = 0

DDRD=0x10110000;
PORTD=0x10000000;

DDRA=0;
PORTA=0;

SREG=|0x80;

UCSRA=0;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0;
UBRRL=3;

ACSR=0x80;
SFIOR=0;

ADMUX=0;
ADCSRA=0x87;

DDRB=0x00011111;

TIMSK=0x04;
TCCR1A=0;
TCCR1B=0;

GICR=0x40;

Hat jemand eine Idee, warum hier insbesondere bei PC2 das Durchschalten
auf Masse nicht sauber funktioniert?
Öffne ich ein neues Projekt und lasse mir vom Codewizard das Programm
generieren, geht es. Kopiere ich aber die Initialisierungszeilen von
dem Programm in meinen ursprünglichen Quelltext, geht es wieder nicht
mehr. Ich nehme an, es liegt an den Projekteinstellungen. Aber welche
könnten das sein?!?

Vielen Dank für Eure Hilfe!

Gruß
KMT

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich würde mal stark tippen das du das JTAG-Interface nicht deaktiviert
hast (über Fuse-Bits).

Matthias

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendsowas in der Richtung hatte ich auch im Verdacht. Habe gerade mal
die Fuse Bits ausgelesen. Raus kam Folgendes:

CKSEL0=1
CKSEL1=1
CKSEL2=1
CKSEL3=1
SUT0=1
SUT1=1
BODEN=1
BODLEVEL=1
BOOTRST=1
BOOTSZ0=1
BOOTSZ1=1
EESAVE=1
CKOPT=1
JTAGEN=1
OCDEN=1

Wie sollten die Fuse Bits denn sinnvollerweise stehen?
Habe einen externen Quarzoszillator mit 7,3728 MHz und Programmiere
über ISP direkt in der Schaltung mit einem STK500.
Compiler ist Codevision C.

Vielen Dank nochmals für die Mithilfe!

Gruß
KMT

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das die Fusebits so stehen kann ich mir fast nicht vorstellen. Wären ja
alle 1. Wie die richtig zu stehen haben kannst du dem Datenblatt
entnehmen. JTAG muß auf jeden Fall ausgeschaltet sein. Wenn du eh mit
dem AVRStudio programmierst hast du da ja eine schöne Übersicht in der
du alle Optionen aktivieren und deaktivieren kannst. Da brauchst du
dich noch nicht mal mit den einzelnen Bits auseinandersetzen.

Matthias

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nochmal nachgeschaut; das Problem besteht nicht nur auf PINC.2,
sondern auch bei einigen Pins von PortD, z.B. PORTD.7. Im
eingeschalteten Zustand kein Problem, im Ausgeschalteten Zustand
(PORTD.7=0) wird der Portpin hochohmig...

Habe das JTAGEN-FuseBit abgeschaltet, das brachte aber (logischerweise)
auf PORTD.7 keine Besserung. Hat jemand noch eine Idee?

Gruß
Kai Markus

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich soeben erledigt; Doofheit vor der Tastatur war mal wieder der
bestimmende Faktor. Ich hatte in der Initialisierung das Register DDRD
so gesetzt:

DDRD=0x10110000;

Das interpretiert Codevision aber nicht als Binär-, sondern als
Hexadezimalzahl.Damit war PORT D7 als Eingang geschaltet, und ich habe
mit PORTD.7=1 bzw. 0 immer nur den Pull-Up-Widerstand ein- und
ausgeschaltet...

Gebe ich stattdessen ein: DDRD=0xB0;

läuft alles wunderbar.

Vielen Dank für Eure Mithilfe!

Gruß
KMT

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.