ATmega128 - komisches I/O PIN Verhalten!

Gast #3111567
Lesenswert?

Hallo,

ich habe eine Schaltung mit einem ATmega128 aufgebaut,
an PF0 bis PF6 hängen LEDs, welche alle gleich angeschlossen sind.

Beim ersten Funktionstest der LEDs, lasse ich den PORTF einfach 2sek 
High und 2sek. Low in einer Endlosschleife laufen.
PF0 bis PF3 machen dies mit und die LEDs blinken, PF4 bis PF6 reagieren 
nicht und sind ständig auf High.

Woran kann das liegen?

DDRF = 0xff;

int main()
{
PORTF = 0xff;
_delay_ms(2000);
PORTF = 0x00;
_delay_ms(2000);
}

Ähnliches Problem beim PORTB, an welchem haargenau wie an PORTF LEDs 
geschaltet sind:

DDRB = 0xff;

int main()
{
PORTB = 0xff;
_delay_ms(2000);
PORTB = 0x00;
_delay_ms(2000);
}

PortB schwankt im 2sek Takt zwischen 5V und 1,3V ???
Gast #3111593
Lesenswert?

> Deaktiviere den JTAG in den Fuse-Bits!

Okay - danke! Habe bisher nur den M103 Fuse gelöscht...

> Bei PORTB könnte ein ISP-Programmer schuld sein, der an PB0-PB3 hängt?

Der ISP Programmer hängt an PB1 (SCK), PE0 sowie PE1 (PDI, PDO).
Gast #3111631
Lesenswert?

> Alle VCCs, GND und AVCC angeschlossen?

PIN 21, 52 und 64 an +5 V
PIN 22, 53 und 63 an GND

> Und an PORTB hängt sonst nichts dran?

PB0 - LED 1
PB1 - SCK vom Programmer (geht auch nicht, wenn er abgezogen ist)
PB2 - LED 2
PB3 - offen
PB4 bis PB7 gehen an Klemmen, an denen aber nichts angeschlossen ist, 
also offen
Gast #3111754
Lesenswert?

> Kompabilitätsfuse?

Das Fuse wurde bereits gelöscht.

> Scheint nichts mit PORTB zu machen.

Was meinst du damit?

> Wenn du folgendes machst:int main(){
> DDRB = 0xFF;
> PORTB = 0xff;
> while(1);
> }
> Sind die Ports dann immernoch 1,3V?

Dann sind alle auf High und 5 V, wenn ich sie auf PORTB = 0x00, also Low 
setze, dann sind sie auf 1,3 V...
#3111773
Lesenswert?

Gäst_5 schrieb:
>> Kompabilitätsfuse?
>
> Das Fuse wurde bereits gelöscht.
>
>> Scheint nichts mit PORTB zu machen.
>
> Was meinst du damit?
Dass der Kompatibilitätsmodus nicht PORTB beeinflusst.

>> Wenn du folgendes machst:int main(){
>> DDRB = 0xFF;
>> PORTB = 0xff;
>> while(1);
>> }
>> Sind die Ports dann immernoch 1,3V?
>
> Dann sind alle auf High und 5 V, wenn ich sie auf PORTB = 0x00, also Low
> setze, dann sind sie auf 1,3 V...
Also für mich hört sich das eher so an als wenn der Controller ständig 
wieder einen Reset macht und du deswegen 1,3V (mit einem Multimeter?) 
misst. Mit nem Scope siehst du vermutlich ein "Rumgezappel"?!
Gast #3112206
Lesenswert?

> Mal ganz dumm gefragt: Haben die LEDs auch Vorwiderstände? Und wenn ja:
> welchen Wert?

Es sind weiße LEDs und die haben einen Vorwiderstand von 140 Ohm.
An den nicht beschalteten Ausgängen von PORTB geht das LOW ebenfalls nur 
auf 1,3 V runter...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren