Forum: Mikrocontroller und Digitale Elektronik Atmega PortA komische Pegel


von Anfänger (Gast)


Lesenswert?

Hallo,
ich benutze einen Atmega 32, den ich über das stk500 Programmiere.
Nach dem meine Schaltung nicht funktionierte habe ich den Fehler am 
PortA des microcontrollers gefunden. Dieser liefert mir 1,4V obwohl ich 
ihn als Ausgang definiert habe und ein Null Signal ausgeben lasse. 
Demnach müsste 0V rauskommen.

AREF = AVCC = VCC = 5V
GND = AGND = 0V
Dazwichen liegen 2x 1uF Kondensatoren.

DDRA = 0xff;
PORTA = 0x00;

Gibt es ein Fuse bit oder ähnliches was dafür verantwortlich ist?

von Krapao (Gast)


Lesenswert?

> Gibt es ein Fuse bit oder ähnliches was dafür verantwortlich ist?

Nein.

> AREF = AVCC = VCC = 5V
> GND = AGND = 0V
> Dazwichen liegen 2x 1uF Kondensatoren.

Schaltpläne in Prosa sind einfach Mist.

Ist der Atmega32 bei der Spannungsmessung noch in dem STK500 oder auf 
einer eigenen Platine?

Bist du sicher, dass der Rest deiner Schaltung keinen Einfluss auf die 
Messung hat?

von Anfänger (Gast)


Lesenswert?

Erstma Danke für deine schnelle Antwort.
Ich habe nach deiner Frage, ob der Rest der Schaltung was damit zu tun 
hat, den uC auf ein Steckbrett gepackt und nur die Anschlüsse
VCC,GND,XTAL2,XTAL1,AREF,AGND,AVCC mit meiner eigentlichen Schaltung 
verbunden und PortC gemessen, 0V, so wie es sein soll. Also liegt es 
wohl an der Schaltung.
Hast du eine Idee wie das kommen kann, denn es sind alle Ports als 
Ausgang definiert und viele Pins sind gar nicht in benutzung. Es gibt 
nur einen Pin an PortB der als Eingang definiert ist.

von Alex S. (thor368)


Lesenswert?

PortA beinhaltet 8 Pins und die liefern alle 1,4V?

Entweder zieht irgend was, das elektrisch mit den entsprechenden Pins 
verbunden ist, diese nach oben oder der Prozessor hat ne Macke. Halbe 
bits auf I/O Pins ist ein typischer Fehler bei durch Überspannung 
geschossenen Ausgängen.

Thor

von Alex S. (thor368)


Lesenswert?

Ah, wait!
> Nach dem meine Schaltung nicht funktionierte habe ich den Fehler am
> PortA des microcontrollers gefunden.

Also hängt tatsächlich was an den pins. Offensichtlich speist diese 
angeschlossene Schaltug einen zu hohen Strom in den I/O Pin zurück.

Thor

von Walter S. (avatar)


Lesenswert?

Anfänger schrieb:
> AREF = AVCC = VCC = 5V

hat nix mit deinem Fehler zu tun aber
Aref=5V ist nicht sinnvoll: wenn du beim Einstellen des AD-Wandlers 
nicht aufpasst produzierst du einen Kurzschluss

von Anfänger (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt nochmal den uC in meine Schaltung gesteckt und alle 
Verbindungen von PortA,B,C,D getrennt. Er hängt also nur noch an
AREF,AVCC,AGND,VCC,GND,XTAL1 und XTAL2. (Siehe Bild)
Und trotzdem liefert er mir an allen Pins von PortC 4V.
Dies ist das vollständige Programm. (So einfach wie möglich um Software 
fehler auszuschließen)

#include <avr/io.h>
int main(void)
{
   DDRA = 0xff;
   PORTA = 0x00;
   while (1)
    {
      }
}

JTAG ist Deaktiviert. Und er ist auf Ext. Crystel gefused.
Ich hatte gehofft, dass es ähnlich wie JTAG, ein fuse Bit was den ADC 
Modus geaktiviert.

von Alex S. (thor368)


Lesenswert?

Mal gecheckt ob der Proz überhaupt läuft? Vielleicht ist Reset low.

Thor

von holger (Gast)


Lesenswert?

>Und trotzdem liefert er mir an allen Pins von PortC 4V.

>   DDRA = 0xff;
>   PORTA = 0x00;

Was denn nun PortA oder PortC?
Wenn du PortA auf Ausgang setzt floatet PortC.

Entscheide dich mal;)

von Anfänger (Gast)


Lesenswert?

Der Reset ist definitv high. Gemessen hab ich es auch 5V. Aber ich 
wollte ein einfaches blinken Progrmmieren. Am stk geht das auch aber in 
der Schaltung liefert er eine konst. Spannung.
Muss man im Programm noch eine Zeile schreiben die den Takt definiert 
wie

#define F_CPU 14745000UL

oder reicht es aus das fuse-Bit auf ext. Crystal zu setzen und er 
übernimmt selbstständig den takt des quarzes

von Christian F. (cmf) Benutzerseite


Lesenswert?

Anfänger schrieb:
> Der Reset ist definitv high. Gemessen hab ich es auch 5V. Aber ich
> wollte ein einfaches blinken Progrmmieren. Am stk geht das auch aber in
> der Schaltung liefert er eine konst. Spannung.
> Muss man im Programm noch eine Zeile schreiben die den Takt definiert
> wie
>
> #define F_CPU 14745000UL
>
> oder reicht es aus das fuse-Bit auf ext. Crystal zu setzen und er
> übernimmt selbstständig den takt des quarzes

Oh oh. Ob du Defines in dein Programm schreibst merkt der µC gar nicht. 
Dies dient nur dazu, z.B. _delay_ms(100) in meinetwegen 1030405 Takte 
warten umzurechnen

von Anfänger (Gast)


Lesenswert?

Ist es möglich das sich PortA und PortC gegenseitig stören?
Ich habe versucht mal beide auf 0xff mal beide 0x00 und mal den einen 
0x00 und den anderen 0xff zu setzen und wenn ich sofort nach einschalten 
gemessen habe kam mist raus hab ich nen kleinen moment später noch ma 
gemessen war alles richtig.

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.