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

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.

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.