Forum: Mikrocontroller und Digitale Elektronik Probleme mit AVR Output - Denkanstoß gesucht


von sam (Gast)


Lesenswert?

Hi zusammen,

ich habe gerade eine Schaltung auf einer geätzten Platine (die ich auf 
einer anderen bereits erfolgreich getestet hatte).
Ich habe einen Atmega1284 und dabei Probleme mit dem PORTC.
Initialisiert habe ich den Port mit:

DDRC = 0x7F;
PORTC |= (1 << 0) | (1 << 1);// SDA + SCL high

Ich habe nun allerdings Probleme das ich die PORTC Pins 2 - 7 nicht auf 
1 gesetzt bekomme und keine 5V an den Pins messen kann, und ich habe 
keine Ahnung warum.
PORTC sollte grundsätzlich funktionieren, da über die PINs 0/1 des Ports 
eine I2C Schnittstelle erfolgreich angesprochen wird.
Der gleiche Programmcode an PORTA funktioniert perfekt, daran liegt es 
also nicht. Ich habe auch schon mein Programm direkt als Testprogramm 
gemacht mit nur:
DDRC = 0x7F;
  PORTC = 0x00;
  while (1) {
    PORTC = 0xff;
  }

und ich kann trotzdem nicht 5V messen.
Was kann ich noch testen oder falsch gemacht haben? Ich bin gerade etwas 
verzweifelt. Wenn ich irgendwie den PORTC geschrottet hätte, dann würde 
doch auch TWI nicht mehr funktionieren...

lg
sam

von Oliver J. (skriptkiddy)


Lesenswert?

Ist JTAG aktiviert?

von g457 (Gast)


Lesenswert?

> PORTC

JTAG?

von Bitflüsterer (Gast)


Lesenswert?

>ich habe gerade eine Schaltung ...

Schön zu wissen. Dann weiss man ja, dass man beim reinschauen in die 
Glaskugel nach realen Schaltungen und nicht nach Träumen davon gucken 
muss. :-) Muss ich noch deutlicher werden?

Ach, und wenn Du schon dabei bist, poste mal bitte ein paar Fotos vom 
Aufbau.

Deine Codephantasien sind ja auch sehr niedlich, aber zeigst Du uns 
bitte realen, vollständigen, compilierbaren Code, der das Problem zeigt?

Das wäre furchtbar nett. Ich helfe nämlich so gerne. Vielen Dank im 
Voraus.

von Thomas E. (thomase)


Lesenswert?

g457 schrieb:
>> PORTC
>
> JTAG?

Ja. Steht in der Top-10-Liste der meistgemachten Fehler ziemlich weit 
oben.

Bitflüsterer schrieb:
>>ich habe gerade eine Schaltung ...
>
> Schön zu wissen. Dann weiss man ja, dass man beim reinschauen in die
> Glaskugel nach realen Schaltungen und nicht nach Träumen davon gucken
> muss. :-) Muss ich noch deutlicher werden?
>
> Ach, und wenn Du schon dabei bist, poste mal bitte ein paar Fotos vom
> Aufbau.
>
> Deine Codephantasien sind ja auch sehr niedlich, aber zeigst Du uns
> bitte realen, vollständigen, compilierbaren Code, der das Problem zeigt?
>
> Das wäre furchtbar nett. Ich helfe nämlich so gerne. Vielen Dank im
> Voraus.

@sam: Schalt die Jtag-Fuse ab und vergiss den Laberheini.

mfg.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

HI

>JTAG?

Betrifft aber nur PC2...Pc5.

>DDRC = 0x7F;
>PORTC |= (1 << 0) | (1 << 1);// SDA + SCL high

Ist für PC0 und PC1 bei aktiviertem TWI unwirksam.

MfG Spess

von Bitflüsterer (Gast)


Lesenswert?

@ Thomas Eckmann

> ... vergiss den Laberheini.
Lustig. Das selbe habe ich auch gerade über Dich gedacht.

von sam (Gast)


Lesenswert?

Hi,


Ahhhh.
JTAG war es natürlich.
Da hätte ich noch stunden gesucht, weil ich eigentlich die Fuses vor ein 
paar Tagen gesetzt hatte, dachte ich zumindest.


Vielen Dank!!!!


lg
Samy

von sam (Gast)


Lesenswert?

...um noch mal vollständig kompilierbaren Code zu posten für Herrn 
Bitflüsterer füge ich den noch mal an.
Ein Foto von der in SMD bestückten Platine und dessen Schaltplan erspare 
ich mir hier mal, die Glaskugel soll ja nicht arbeitslos werden.

#include <avr/io.h>

#ifndef F_CPU
  #define F_CPU    20000000
#endif

int main(void) {
  DDRC = 0x7F;
  PORTC = 0x00;
  while (1) {
    PORTC = 0x7f;
  }
}


Aber wie zuvor geschrieben, Problem gelöst durch das vergessene JTAG...

von Bitflüsterer (Gast)


Lesenswert?

Es bleibt offen, warum Du an Pin 6 keinen High-Pegel hast messen können 
und nach dem Code aus dem ersten Posting auch, warum Du das an Pin 7 
nicht konntest.

Nach der Beschreibung konnte es nicht an der JTAG-Fuse liegen. Das 
schrieb auch Spess schon.

von sam (Gast)


Lesenswert?

Der Punkt bleibt wirklich offen. Das lag daran, das ich die beiden Pins 
nicht gemessen hatte.

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.