Forum: Mikrocontroller und Digitale Elektronik Strombelastbarkeit RESET PIN beim Atmega 8


von Uwe L. (liedtkeu)


Lesenswert?

Hallo,

ich bin gerade dabei mir einen Multiplexer (mit dem Atmega8) für eine 15 
Segmentanzeige zu  entwerfen, die meisten Funktionen klappen auch schon. 
Nur ein Display leuchtet dunkler als die anderen und zwar das welches 
durch den PORT PC6 (RESET PIN) bedient wird. Am PC 6 hängt die Kathode 
des Displays. Im Datenblatt kann ich keine Unterschiede zwecks der 
Strombelastung im Vergleich zu den anderen Pins des PORTS C finden.
Hat hier schon einer ähnliche Erfahrungen gemacht und hat wenn möglich 
eine Lösung (ohne Treiber) für das Problem.

Gruß Uwe

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hängt den noch etwas an dem Reset Pin dran? Und wie Programmierst du den 
Mega8?

von holger (Gast)


Lesenswert?

Figure 151. Reset Pin as I/O – Pin Source Current vs. Output Voltage 
(VCC = 5V)

Jo, der liefert wesentlich weniger Strom als die anderen IO.

von Uwe L. (liedtkeu)


Lesenswert?

Läubi .. schrieb:
> Hängt den noch etwas an dem Reset Pin dran? Nein.
>Und wie Programmierst du den Mega8?
PORT INIT:
void PORTs_init(void)
{
/*
PORTB
Segment j  PB0
Segment k  PB1
Segment l  PB2
Segment m  PB3
Segment n  PB4
Segment p  PB5
Segment DP PB6
Display 6  PB7
FUSES SETTING BEACHTEN ( PORT 6 + 7 INT OSC einschalten)
*/

  DDRB = 0b10000000;      // Datenrichtung wird erst im Programm 
festgelegt TRISTAT
  PORTB =0b00000000;      // OFF
  // PB7 muss nach der Testphase noch auf 1 gesetzt werden.
/*
PORTD
Segment a  PD0
Segment b  PD1
Segment c  PD2
Segment d  PD3
Segment e  PD4
Segment f  PD5
Segment g  PD6
Segment h  PD7
*/
  DDRD =  0b00000000;      // Datenrichtung wird erst im Programm 
festgelegt TRISTAT
  PORTD = 0b00000000;      // OFF


/*
// PORTC
Display 1  PC0
Display 2  PC1
Display 3  PC2
Display 4  PC3
SDA      PC4
SCL      PC5
Display 5  PC6   (RESET) FUSES SETTING BEACHTEN
*/

  DDRC =  0b01001111;      // ALLE PORTS OUTPUT  // PORT 4 + 5 TRISTATE
  PORTC = 0b00000000;    // OFF

}

Auswahl DIGIT:

void selectDigit(uint8_t digit)
{
    switch (digit)
  {
        case 0:
      sbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      cbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
        case 1:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      sbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      cbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
        case 2:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      sbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      cbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
        case 3:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      sbi(DIS4, DIS);
      cbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
        case 4:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      sbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
        case 5:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      cbi(DIS5, DIS);
      sbi(DIS6, DI_S);
      break;
        default:
      cbi(DIS1, DIS);      // Zuschalten der ausgewählten Anzeige
      cbi(DIS2, DIS);      // und abschalten der nicht
      cbi(DIS3, DIS);      // ausgewählten Stellen
      cbi(DIS4, DIS);
      cbi(DIS5, DIS);
      cbi(DIS6, DI_S);
      break;
    }
}

Definition:

#define DIS1        0    // PORTC
#define DIS2        1    // PORTC
#define DIS3        2    // PORTC
#define DIS4        3    // PORTC
#define DIS5        6    // PORTC
#define DIS6        7    // PORTB

von Michael U. (amiga)


Lesenswert?

Hallo,

holger schrieb:
> Figure 151. Reset Pin as I/O – Pin Source Current vs. Output Voltage
> (VCC = 5V)
>
> Jo, der liefert wesentlich weniger Strom als die anderen IO.

Zustimmung, da bin ich auch schonmal drauf reingefallen...

Gruß aus Berlin
Michael

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Uwe Liedtke schrieb:
> Läubi .. schrieb:
>> Hängt den noch etwas an dem Reset Pin dran? Nein.
>>Und wie Programmierst du den Mega8?
Auch wenn Holger wohl die Lösung hat, bezog sich meine Frage eher darauf 
wie das Programm in den Mega kommt, per Booatloader oder HV, aber wenn 
da im Betrieg nix dranhängt ist das eh obsolete.

von Uwe L. (liedtkeu)


Lesenswert?

Danke, die Seite habe ich im Datenblatt nicht gefunden. Der Tipp war 
wirklich sehr hilfreich.

Gruß Uwe

von Uwe L. (liedtkeu)


Lesenswert?

Läubi .. schrieb:
> Uwe Liedtke schrieb:
>> Läubi .. schrieb:
>>> Hängt den noch etwas an dem Reset Pin dran? Nein.
>>>Und wie Programmierst du den Mega8?
> Auch wenn Holger wohl die Lösung hat, bezog sich meine Frage eher darauf
> wie das Programm in den Mega kommt, per Booatloader oder HV, aber wenn
> da im Betrieg nix dranhängt ist das eh obsolete.

das Programm kommt per HV in den Mega. Danke für Eure Hilfe !!!!

Gruß Uwe

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.