Ein- & Ausgänge spielen verrückt ATmega128

Gast #1289495
Lesenswert?

Guten Abend!

Hab ein Problemm mit dem ATmega 128 als fertiges Board mit 16Mhz 
Quarz(siehe Anhang). Programmierung in C über AVRstudio und einen 
USB-ISP Compiler.

Wenn ich im die Ausgänge definiere (mit DDRA=0xff; und dann noch 
DDRE0=ff;) und ihm dann ganz einfach einen Port schalte 
(PORTE=(1<<PE0);) und das einfach mal herein lade, läuft alles erstmal 
so wie es soll.

An den Ausgängen A ist kein Signal und an den ganzen Eingängen wird kein 
Signal angelegt und liegt auch keins an. Man kann dann auch schön seine 
fast 5V am Port E0 messen. Also alles soweit okay.

Wenn ich jetzt jedoch ein Umfangreicheres Programm mit Eingangsabfragen 
über if und while mache bekomme ich im nicht beschalteten Zustand (nicht 
angeschlossen, die nackten Pins) richtig komische Zustände. Ausgänge um 
die 2,5V und Eingange um die 1,7V. Die Pull-Widerstände sind nicht 
deaktiviert worden oder des gleichen.

Liegt das evtl. an einer Compilereinstellung oder sollte ich die Ein- & 
Ausgänge besser anders definieren und wenn wie (vielleicht ein kleines 
Beispiel).

Danke schon mal für die Hilfe
Angehängte Dateien:
Gast #1289509
Lesenswert?

hier mal Auszüge:

#define F_CPU 16000000

#include <avr/io.h>
#include <util/delay.h>

// Übung mit Probeplatine !!!

int main (void)
{
    // Ausgänge-Eingänge definieren !!!

    DDRA=0xff;
    DDRB=0x00;
    DDRC=0x03;
    DDRD=0x00;
    DDRE=0x0f;
    DDRF=0xff;
    DDRG=0x00;



    while(1)     // Endlosschleife damit das Programm nicht stoppt
    {


        if((PORTC&0x40) && (PORTD&0x80))
        {
            PORTF~=(1<<PF3);
            PORTE~=(1<<PE1);
            PORTF=(1<<PF2);
            PORTE=(1<<PE0);
        }

usw.

Ich hoffe der kleine Auszug reicht um dir ein Bild machen zu können. Das 
Programm ist zwar größer aber immer nach diesem Muster aufgebaut. 
Einzige besonderheit das auch mal ein delay kommt aber sonst ganz 
schlicht mit if und while.
Die Eingänge sind teilweise Taster oder auch Schaltkontakte(z.B. 
Endlagenschalter) die dann ein Signal auf den Eingang bringen.
Gast #1289528
Lesenswert?

DANKE !!!

Tja, manchmal sieht man den Wald vor lauter Bäumen nicht. Ist in 
Tutorials ja auch extra rot markiert. Kann mir mein Fehler mit PORT und 
PIN schon erklären, hab halt Befehlzeilen (um die Arbeit zu erleichtern 
kopiert) und dann nur die Zahlen jeweils geändert und garnicht auf das 
geachtet, einfach glaubig überlesen.

Aber kann das dann schon das spinnen der Ein und Ausgänge beheben oder 
ist da evtl. noch etwas anderes im argen???

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