Forum: Mikrocontroller und Digitale Elektronik ATMEGA32 port-pin Belegungsproblem.


von Leo (Gast)


Lesenswert?

Hallo,

Ich habe ein Problem mit der PORT-PIN Belegung. Und zwar möchte ich 
durch einen Schalter auf PORTC0 einen PIN PB4 umschalten können.
z.b Es soll durch den Schalter ein High signal am ATMEGA32 ankommen und 
dann soll der PIN PB4 auf 1 gesetzt werden.
Im unteren Beispiel ist der PB4 immer auf 1 gesetzt. Der schalter hat 
keinen Einfluss auf PB4.
Würde mich auf weitere Hilfe freuen.



#include <avr/io.h>
#include <stdio.h>




int main (void)
{
DDRB = 0xFF;
DDRC = 0x00;


  while(1)
  {

    if( PINC & (1<<PINC1))
    {
      PORTB= (1<<PB4); //Soll über PINC0 angesteuert werden.

    }
    else PORTB&=~(1<<PB4);
  }
}

von Leo (Gast)


Lesenswert?

es sollte if( PINC & (1<<PINC0)) sein

von Hmm... (Gast)


Lesenswert?

1. Du sagst nichts dazu, wie der Schalter verdrahtet ist. Der benötigt 
einen Pull-Up (oder Pull-Down) Widerstand. Ganz einfach: nimm den 
internen Pull-Up!
2. Für Dein Programm (noch) nicht relevant: Entprellung.

von Braten (Gast)


Lesenswert?

JTAG am PORT C deaktiviert?

ohne den code gelesen zu haben?!

von Leo (Gast)


Lesenswert?

Danke für eure Hilfe!
Ich habs hinbekommen.
Hatte bei den Schalter keine Widerstände zu GND gehabt und beim 
Einschalten wurden sie sofort auf high geladen und nicht mehr entladen.
:)

von Hmm... (Gast)


Lesenswert?

Noch besser beraten (Du sparst Hardware) wärst Du mit den 
prozessor-internen Pull-Up-Widerständen (Schalter dann gegen GND) und 
entsprechend umgekehrter Logik (PIN L bedeutet Schalter EIN).

von Leo (Gast)


Lesenswert?

Hast du Recht. Danke für den Tipp.

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.