Forum: Mikrocontroller und Digitale Elektronik ATmega8: PortB.2 nutzen


von Philipp B (Gast)


Lesenswert?

Hallo, ich hab ein kleines Problem. Und zwar kann ich nicht auf das 2Bit
von PortB zugreifen. Ich nehme an, da der Pin mehrfach belegt ist (PB2,
\SS und OC1B) muss ich dem Controller mitteilen, dass der Pin für
PortB sein soll.
Aber wie kann ich das machen??

Danke für Tips

von Armin Kniesel (Gast)


Lesenswert?

Der Pin ist ein normaler I-O-Pin und braucht nicht extra deklariert zu
werden.

von Philipp B (Gast)


Lesenswert?

ich kann ihn aber nicht nutzen. Die anderen funktionieren (0,1,3,4,5),
nur der zweite nicht.

von Philipp B (Gast)


Lesenswert?

Ich hab jetzt mal die Doku druchsucht. Ich nehme an, dass \SS aktiv
ist, und zwar ist das der Fall, wenn SPI als Slave aktiv ist (wenn ich
das richtig verstanden hab).

Leider weiß ich aber nicht, wie ich SPI deaktivieren oder zum Master
kann.
Vielleicht liegt der Fehler auch woanders. Ich hab folgendes Programm
zum testen:

while (1)
{
  PORTB= 0xff;
  delay(50);

  PORTB= 0x00;
  delay(50);
}

Das bringt LEDs am PortB zum blinken. Nur die 3 LED (also Bit 2) blinkt
nicht.

von Mattias (Gast)


Lesenswert?

Hallo Philipp,
ob SPI als Master oder Slave arbeiten soll, steht im SPCR Register.
Datenblatt Seite 126. Dort kannst Du alles einstellen.

• Bit 4 – MSTR: Master/Slave Select
This bit selects Master SPI mode when written to one, and Slave SPI
mode when written
logic zero. If SS is configured as an input and is driven low while
MSTR is set, MSTR will
be cleared, and SPIF in SPSR will become set. The user will then have
to set MSTR to
re-enable SPI Master mode.

Gruß Mattias

von Philipp B (Gast)


Lesenswert?

Hallo, danke schonmal für eure Hilfe.
Leider hab ich immer noch keine Lösung.

Aber mir ist gerade aufgefallen, dass ich keinen 2. Bit von einem Port
zugreifen kann. Also bei PortB, PortC und PortD funktioniert jeweils
das 2.Bit nicht. Alle anderen funktionieren.
Ich kann mir irgendwie nicht vorstellen, dass das zufall ist. z.B.
PortC Bit 2 ist mit PC2 und ADC2 belegt, genauso wie Bit 0, 1 und 3.
Und die funktionieren.

Kann das ein defekt am IC sein??
Aber wieso ist dann immer das 2. Bit defekt? Arg, ich verzweifel nocht.

von Philipp B (Gast)


Lesenswert?

hat sich erledigt, die Bits gehen wohl doch. irgendwas muss an meinem
Programm flasch sein ....

mit Assembler geht es.

von Malte (Gast)


Lesenswert?

An deinem Programm ist nix falsch!
wenn es mit ASM geht scheint der Compiler schrott zu sein? Kein plan.
aber hin und wieder gibt es immer komische Konstellationen, geht mir
auch so :)

von Malte (Gast)


Lesenswert?

Sorry, nachtrag zu "programm richtig";
ausser du hast ausgerechnet alle Pin2 der Ports auf input geschaltet
sfg

Gruss, Malte

von Philipp B (Gast)


Lesenswert?

ne, selbstverständlich nicht grr, schön ware es, dann hätte ich den
Fehler.

mhhh, ich glaub da muss ich mal richtig suchen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.