www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie dioden zu Pins von Atmega 8 geschalten?


Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich baue gerade ein Projekt vom Sciptkiller nach und habe den quelltext 
erhalten nun frage ich mich wie ich die taster mit den Dioden verbinden 
soll. Habe was im Quelltext gefunden. Vielleicht hat jemand von euch ne 
ahnung wie ich das schalten soll.


http://scriptkiller.de/avr_mikrocontroller_netzteil.php
/* button-press handling */
void uiButtonCode(unsigned char code) {

  switch(code) {
    
    /* U++ */
  case 0x01: {
    ui_last_modified=LAST_U;
    ui_mode=UI_MODE_UI;
    if(ui_voltage!=0xFF)
      uiSetVoltage(++ui_voltage);
  }; break;

  /* U-- */
  case 0x02: {
    ui_last_modified=LAST_U;
    ui_mode=UI_MODE_UI;
    if(ui_voltage >= 1)
      uiSetVoltage(--ui_voltage);
  }; break;

  /* I++ */
  case 0x03: {
    ui_last_modified=LAST_I;
    ui_mode=UI_MODE_UI;
    if(ui_current != 0xFF)
      uiSetCurrent(++ui_current);
  }; break;

  /* I-- */
  case 0x04: {
    ui_last_modified=LAST_I;
    ui_mode=UI_MODE_UI;
    if(ui_current >= 1)
      uiSetCurrent(--ui_current);
  }; break;

  /* UP */
  case 0x05: {
    #define SOLDER_STEP 10
    #define U_FAST_STEP 16
    #define I_FAST_STEP 32

    /* SOLDER+=STEP */
    if(ui_mode == UI_MODE_SOLDER) {
      if(ui_solder + SOLDER_STEP > 100) {
  uiSetSolder(100);
      }
      else {
  uiSetSolder(ui_solder+SOLDER_STEP);
      }
    }
    /* U+=STEP / I+=STEP */
    else if(ui_mode == UI_MODE_UI) {
      if(ui_last_modified == LAST_U) {
  if(ui_voltage + U_FAST_STEP > 0xFF) {
    uiSetVoltage(0xFF);
  }
  else {
    uiSetVoltage(ui_voltage+U_FAST_STEP);
  }
      }
      else if(ui_last_modified == LAST_I) {
  if(ui_current + I_FAST_STEP > 0xFF) {
          uiSetCurrent(0xFF);
        }
        else {
          uiSetCurrent(ui_current+I_FAST_STEP);
        }
      }
    }
    
  }; break;

  /* DOWN */
  case 0x06: {
    /* SOLDER-=STEP */
    if(ui_mode == UI_MODE_SOLDER) {
      if(ui_solder - SOLDER_STEP < 0) {
  uiSetSolder(0);
      }
      else {
  uiSetSolder(ui_solder-SOLDER_STEP);
      }
    }
    /* U-=STEP / I-=STEP */
    else if(ui_mode == UI_MODE_UI) {

      if(ui_last_modified == LAST_U) {
        if(ui_voltage - U_FAST_STEP < 0) {
          uiSetVoltage(0x00);
        }
        else {
          uiSetVoltage(ui_voltage-U_FAST_STEP);
        }
      }
      else if(ui_last_modified == LAST_I) {
        if(ui_current - I_FAST_STEP < 0) {
          uiSetCurrent(0x00);
        }
        else {
          uiSetCurrent(ui_current-I_FAST_STEP);
        }
      }


    }

  }; break;

  /* MODE */
  case 0x07: {
    uiSwitchMode();
  }; break;
    
  /* STANDBY */
  case 0x08: {
    uiToggleStandby();
  }; break;

  }

}

Autor: Wegstabenverbuchsler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich baue gerade ein Projekt vom Sciptkiller nach ...
> Vielleicht hat jemand von euch ne ahnung wie ich das schalten soll.

Was sagt denn der Autor (Scriptkiller) zu der Beschaltung "seiner" 
Tasten?
Das wäre ja mal ein nützlicher Hiweis, wenn du ihn um Ergänzung dieser 
Information auf seiner Webseite bittest.

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat er leider nichtmehr

Autor: TorstenS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so wie es auf der Webseite beschrieben ist, vermute ich, dass er je 
Taster die für den gewünschten Eingangscode erforderlichen Pins über 
eine Diode nach Masse zieht:

Code 0: 4 Dioden, Katoden gemeinsam über Taster gegen Masse zu schalten, 
Anode jeweils an ein Eingangs-Pin
Code 1: 3 Dioden (Bit1...3)
Code 2: 3 Dioden (Bit 0, Bit2...3)
Code 3: 2 Dioden (Bit2...3)
...
Code 7: 1 Diode (Bit3)

Zusätzlich zu den Kodier-Dioden soll eine weitere Diode gegen den 
Interrupt-Eingang geschaltet werden (8 Dioden mit Anoden am 
Interrupt-Eingang, Katode wird jeweils vom Taster gegen Masse gezogen.

Tschüss
Torsten

Autor: Thomas St. (Firma: RF-I) (rasieel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann ich da ne 1N4007 oder ne 4148 nehmen???

Autor: TorstenS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Dioden kannst du verwenden. Sie dienen ja nur der Entkopplung, so 
dass keine großen Anforderungen an Sperrspannung und Strom gestellt 
werden.

Tschüss
Torsten

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 1N400x sind hierfür absolut oversized. Ne 1n4148 tuts allemal.

Gruß,
Magnetus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.