GREETBoard – ATMega128 Extension

GREETBoard-ATMega128 Extension - Version 1.1

GREETBoard-ATMega128 Extension – Version 1.1

Version 1.1

Viele Starter-Kits integrieren so viele Funktionen wie möglich auf eine Leiterplatte. Zwar  profitieren Anfänger hiervon, da diese Funktionen wunderbar auf einer Platine ausprobiert werden können. Jedoch mit steigender Erfahrung und bei Umsetzung etwas stärker spezialisierter Schaltungen, sind einige dieser Funktionen nicht mehr nötig. Somit nimmt die Flexibilität mit der Anzahl der Funktionen auf einer Platine ab.

Aus diesem Grund habe ich von Beginn an die zusätzlichen Funktionen vom Mikrocontroller getrennt und nur ganz grundlegende Dinge auf dem Hauptmodul, dem GREETBoard ATMega128, belassen. Damit wird das Board um die Hälfte kleiner und kann in individuelle Anwendungen per Wannenbuchsen-Stecker integriert werden ohne die unbenötigten Funktionen „mitzuschleppen“.

Auf die vielen Zusatzfunktionen muss aber nicht verzichtet werden. Diese fügt man ganz einfach, durch das aufsteckbare GREETBoard – ATMega128 Expansion Modul, hinzu.

Schwierigkeitsgrad

GREETBoard - ATMega128 Expansion - SchwierigkeitsgradDa nicht jeder ein Löt-Profil oder Programmier-Crack ist, versuche ich die Module in Schwierigkeitsgrade aufzuteilen. Damit kann sich jeder entsprechend seiner persönlichen Fähigkeiten an die  verschiedenen Module und Programme heranwagen.

Aufgrund des Temperatursensors habe ich den Löt-Schwierigkeitsgrad eine Stufe erhöht. Mit einer ruhigen Hand ist es aber recht einfach das Bauteil zu löten.

Vor allem Programmier-Anfänger haben mit diesem Modul die Möglichkeiten viel zu lernen. Erste Erfolge sind hiermit auch ohne Programmierkenntnisse schnell zu erzielen.

Eigenschaften

  • Alle Ports mit Federkraftklemmen herausgeführt
  • 8 LEDs, zuschaltbar mit Jumper am Port D
  • 6 Taster, zuschaltbar mit Jumper am Port C
  • Trimmer für Tests des analoges Eingangs, per Jumper zuschaltbar
  • I²C Temperatursensor LM75CIM (SMD Bauteil)
  • Kleiner Lautsprecher an einem der PWM-Ausgänge
  • zusätzlicher Reset-Taster
  • RS232 Pins, 3-polig
  • 4 VCC Schraubkontakte
  • 4 GND Schraubkontakte
  • durchkontaktierte Lötpads für individuelle, kleine Schaltungen
  • Maße: ca. 50 x 80 mm (1/4 Modul)

Modul-Übersicht

Beim GREETBoard – ATMega128 Extension werden alle Ports des Mikrocontrollers auf Federkraftklemmen geführt. Dadurch kann das Hauptmodul mit seinem ATMega1284P für eigene Schaltungen verwendet werden. Zusätzlich sind jeweils vier VCC/GND Schraubkontakte auf dem Board vorhanden.

ATMega128 Extension - Funktionen - Version 1.1

ATMega128 Extension – Funktionen – Version 1.1

Bestückungsplan

ATMega128 Extension - Schaltplan - Version 1.1

ATMega128 Extension – Schaltplan – Version 1.1

Stückliste

StückBauteilWert
2C1, C2100nF (104)
8LED1-8LED grün, 3mm
1IC1LM75CIM-5
1SP1Pieper
1R110k Ohm (br/schw/schw/ro)
1R2Potentiometer, 5k Ohm
1RR1Widerstandsnetzwerk, 9-pol., 220 Ohm
7S1-6, Reset1Kurzhubtaster
4X1, X3, X5, X78-pol. Federkraftklemme
5JP1, JP2, JP3, JP4, X123-pol. Stiftleiste
1X94-pol. Stiftleiste
4X2, X4, X6, X88-pol. Stiftleiste
2X10, X114-pol. Schraubklemme

Schaltplan

ATMega128 Extension - Schaltplan - Version 1.1

ATMega128 Extension – Schaltplan – Version 1.1

Erste Programme

Taster abfragen

Dieses Programm fragt den Taster 1 ab und schaltet die LED 1 ein, wenn dieser gedrückt wird. Sie wird wieder ausgeschaltet, wenn Taster 1 losgelassen wird.

#ifndef F_CPU	//Definiere CPU-Takt
  #define F_CPU 16000000
#endif 

#include <avr/io.h>

int main(void) {         // Hauptprogramm
  DDRD |= (1 << DDD3);   // PD3 = Ausgang => LED1
  DDRC &= ~(1 << DDC2);  // PC2 = Eingang => Taster1
  PORTC |= _BV(2);       // Pull Up an PC2 aktivieren 

  while(1){              // Hauptschleife    
    if (PINC & (1<<2)){  // Wenn Taste gedrückt...
      PORTD |= _BV(3);   // ...LED1 ein
    }
    else {               // ansonsten...
      PORTD &=~_BV(3);   // ...LED1 aus
    }
  }
}

Analogen Wert auslesen

Auf dem GREETBoard – ATMega128 Extension ist u.a. ein Potentiometer verbaut, dass direkt an einen der ADCs angeschlossen ist. Den hier eingestellten Wert soll erkannt und bei Erreichen von VCC/2 die LED1 eingeschaltet werden. Liegt der Wert unter VCC/2 wird die LED1 ausgeschaltet.

#ifndef F_CPU	//Definiere CPU-Takt
  #define F_CPU 16000000
#endif 

#include <avr/io.h>

void ADC_Init(void) {
  uint16_t result;                      // Defin. von „result“
  ADMUX = (1<<REFS0);                   //AVCC = Referenzspannung
  ADCSRA = (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren

     //Dummy-Readout
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung 
  while (ADCSRA & (1<<ADSC) ) {         // auf Abschluss warten
  }
  result = ADC;                         // ADC 1x lesen!!
}

uint16_t ADC_Read( uint8_t channel ) {  // ADC-Messung
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);  // Kanal auswählen
  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung
  while (ADCSRA & (1<<ADSC) ) {         // auf Abschluss warten
  }
  return ADC;                           // ADC zurückgeben
}

int main(void) {                        // Hauptprogramm
  DDRD |= (1 << DDD3);                  // PD3 = Ausgang => LED 1

  uint16_t adcval;                      // Defin. von „adcval“
  ADC_Init();                           // ADC-Lesung initiieren

  while(1){                             // Hauptschleife  
    adcval = ADC_Read(7);               // Kanal 7
    if (adcval >= 512){                 // wenn Vcc/2 erreicht...
      PORTD |= _BV(3);                  // ...LED1 ein
    {
    else                                // ansonsten...
      PORTD &=~_BV(3);                  // ...LED1 aus
    }
  }
}

Steckerbelegungen

Bez.BeschreibungPinBelegungSymbol
X1
X2
Port-Buchse
Port A
1
2
3
4
5
6
7
8
PA0(ADC0)
PA1(ADC1)
PA2(ADC2)
PA3(ADC3)
PA4(ADC4)
PA5(ADC5)
PA6(ADC6)
PA7(ADC7)
X3
X4
Port-Buchse
Port B
1
2
3
4
5
6
7
8
PB0
PB1
PB2(INT2)
PB3(OC0)
PB4
PB5(MOSI)
PB6(MISO)
PB7(SCK)
X5
X6
Port-Buchse
Port C
1
2
3
4
5
6
7
8
PC0(SCL)
PC1(SDA)
PC2(TCK)
PC3(TMS)
PC4(TDO)
PC5(TDI)
PC6(TOSC1)
PC7(TOSC2)
X7
X8
Port-Buchse
Port D
1
2
3
4
5
6
7
8
PD0(RXD)
PD1(TXD)
PD2(INT0)
PD3(INT1)
PD4(OC1B)
PD5(OC1A)
PD6(OC2B)
PD7(OC2A)
X9VCC Buchse1
2
3
4
Reset
15V
GND
VCC
X10GND1-4GND
X11VCC1-4VCC
X12RS2321
2
3
RXD
GND
TXD
JP1Speaker1-2
2-3
Aktiviert
Deaktiviert
JP2LED1-2
2-3
Aktiviert
Deaktiviert
JP3Analog1-2
2-3
Aktiviert
Deaktiviert
JP4Tasten1-2
2-3
Aktiviert
Deaktiviert