ATMEGA8 + Pullups by PD7 + PD6

  • Thread starter andreas ruetten
  • Start date
A

andreas ruetten

Guest
Hallo,
ich will die Ports PD6 und PD7 als digitale Eingänge benutzen.
Dazu brauche ich aber den eingebauten Pullup.
Wie kann ich den einschalten ????

ACSR = 0x80 ; -> Eigentlich sollte dann der Komperator aus sein, warum
gibt es dann keine Pullups ??


Eigentlich sollte das gehen Zitat Datenblatt :

Port D (PD7..PD0) Port D is an 8-bit bi-directional I/O port with
internal pull-up resistors (selected for each
bit). The Port D output buffers have symmetrical drive characteristics
with both high sink
and source capability. As inputs, Port D pins that are externally pulled
low will source
current if the pull-up resistors are activated.

Was muß ich noch beachten ???
AD Wandler abschalten ?


mfg Andreas Rütten
 
andreas ruetten wrote:

Was muß ich noch beachten ???
DDRD.7 = 0;
DDRD.6 = 0; /* port pins auf eingang */
PORTD.7 =1;
PORTD.6 =1; /* eingänge mit pullup */

Um die Pullups einzuschalten müssen die Ausgänge auf 1 gesetzt werden.

Gruß
Wolf
 
Wolf-Ruediger Juergens schrieb:

andreas ruetten wrote:

Was muß ich noch beachten ???

DDRD.7 = 0;
DDRD.6 = 0; /* port pins auf eingang */
PORTD.7 =1;
PORTD.6 =1; /* eingänge mit pullup */

Um die Pullups einzuschalten müssen die Ausgänge auf 1 gesetzt werden.
Ja, aber das ist nicht das Problem ,
ich habe das berücksichtigt.
PORTD=0xff;
DDRD=0x14;



Gruß
Wolf
 
andreas ruetten wrote:

Ja, aber das ist nicht das Problem ,
ich habe das berücksichtigt.
PORTD=0xff;
DDRD=0x14;
Dann bleibt nur noch das PUD BIT, das muß 0 sein. Siehe Tabelle 20 und
21 im ATMega8 Manual.

Gruß
Wolf
 
Wolf-Ruediger Juergens schrieb:

andreas ruetten wrote:

Ja, aber das ist nicht das Problem ,
ich habe das berücksichtigt.
PORTD=0xff;
DDRD=0x14;

Dann bleibt nur noch das PUD BIT, das muß 0 sein. Siehe Tabelle 20 und
21 im ATMega8 Manual.
Hmm,
Das setzt doch die Pullups für alle IO Ports oder ?
Also ich habe das Problem wirklich nur auf PD5 PD6

Ich verwende folgende Ini Routine ....

// Input/Output Ports initialization
PORTB=0xFF;
DDRB=0xff;

// Port C initialization
PORTC=0x38;
DDRC=0x30;

// Port D initialization
PORTD=0xff;
DDRD=0x14;

// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Falling Edge
GICR |=0x80;
MCUCR=0x08;
GIFR=0x80;

// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x85;
SFIOR&=0xEF;

ACSR = 0x80 ;

> mfg Andreas Ruetten
 
andreas ruetten wrote:

// Port D initialization

PORTD=0xff;
DDRD=0x14;
Dann mach doch mal nur die beiden obigen Befehle im Init, wie sieht es
dann nach einem Reset aus?

Gruß
Wolf
 

Welcome to EDABoard.com

Sponsor

Back
Top