Portkonfiguration ATmega32

Gast #69100
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
Gast
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
Gast
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
Gast
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
Gast
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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.