Forum: Mikrocontroller und Digitale Elektronik atmega128 reagiert nicht auf Eingänge


von Michael H. (Gast)


Lesenswert?

Hallo,

ich versuche den atmega128 mit AVR-Studio4 zu programmieren und habe nun 
einige mini-testprogramme geschrieben:

z.B: Signal durchschalten

#include <avr/io.h>

int main(void)
{
   DDRB=0xFF;
   PORTB=0xFF;
   DDRE=0x00;
   PORTE=0xFF;

   while(1)
  {
    if(PORTE==0xFF)
    {
      PORTB=0xFF;
    }
    else
    {
      PORTB=0x00;
    }
  }



}

jedoch ändert sich der Ausgang nicht, ich habe zwar schon vermutet, dass 
der Eingangsport defekt ist, jedoch funktioniert es mit einem anderen 
Port auch nicht.

Ist in der Software irgend ein Fehler???

von Falk (Gast)


Lesenswert?

@Michael H.

>    if(PORTE==0xFF)

Klassischer Fehler. ;-)
Versuch mal

if(PINE==0xFF)

MFG
Falk

von anworter (Gast)


Lesenswert?

Dein Quelltext soll also dann alle Pins an PORTB hochziehen, wenn ALLE 
Pins an PORTE high sind, und sonst alle Pins an PORTB runterziehen ?

Wie ziehst Du denn alle Pins von PORTE auf "1" ?

von Michael H. (Gast)


Lesenswert?

>     Wie ziehst Du denn alle Pins von PORTE auf "1" ?

das problem ist, dass wenn ich den PORTE auf 0 ziehe, PORTB gar nicht 
erst reagiert, also zu dem fall bin ich noch nicht gekommen,



und es stimmt schon ich muss "if(PINE==0xFF)" schreiben, doch das habe 
ich auch schon versucht und es hat nicht funktioniert.

von Falk (Gast)


Lesenswert?

@Michael H.

>>     Wie ziehst Du denn alle Pins von PORTE auf "1" ?

>das problem ist, dass wenn ich den PORTE auf 0 ziehe, PORTB gar nicht

Das sind aber 8 Pins, das ist dir hoffentlich klar?

>erst reagiert, also zu dem fall bin ich noch nicht gekommen,

In deiner Routine reagiert er nur, wenn du alle 8 Pins (=PORTE) auf 0 
ziehst, mittels Taster oder so. Denn du schaltest bei PORTE die internen 
Pull-ups ein.

>und es stimmt schon ich muss "if(PINE==0xFF)" schreiben, doch das habe
>ich auch schon versucht und es hat nicht funktioniert.

Schreib mal

if((PINE & 0x01) ==0x01)

dann regiert dein Prgramm nur auf EINEN PIN, nämlich PE0.

MfG
Falk

von johnny.m (Gast)


Lesenswert?

> In deiner Routine reagiert er nur, wenn du alle 8 Pins (=PORTE) auf 0
> ziehst,
Nein, es reicht, wenn ein Pin 0 ist, weil dann PINE nicht mehr 0xFF 
ist...

von Falk (Gast)


Lesenswert?

Ach ja, stimmt. :-(
Bin im Stress!

MFG
Falk

von D. W. (dave) Benutzerseite


Lesenswert?

Ist PORTB 1 oder 0 wenn du es ausprobierst?

von Michael.h (Gast)


Lesenswert?

ich habe das problem schon behoben, k.a. was da nicht funktioniert hat, 
beim ca. 8. mal probieren hats geklappt, trotzdem danke an alle

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.