Mar 10 2013

ethersex – netio – dht11 (dht22 not working yet)

yes, ethersex has included now dht11 (cheap humidity and temperature sensor – 1 wire similar digital protocol)

 

here are some task I needed to do in order to get that working:

– scripts/add-hardware netio_local

then edit the newly created user file: pinning/hardware/user_netio_local.m4

for my lcd hd47780, yours maybe different pins:


dnl
dnl user_netio_local.m4
dnl
dnl Pin Configuration for 'user_netio_local'. Edit it to fit your needs.
dnl

/* onewire port range */
ONEWIRE_PORT_RANGE(PA6, PA6)

/* port the enc28j60 is attached to */
pin(SPI_CS_NET, SPI_CS_HARDWARE)

/* DHT 11/22 humidity and temperature sensors */
pin(DHT, PA7, INPUT)

pin(HD44780_RS, PD3)
pin(HD44780_EN1, PB0)
pin(HD44780_D4, PD4)
pin(HD44780_D5, PD5)
pin(HD44780_D6, PD6)
pin(HD44780_D7, PD7)

pin(HD44780_RW, PD2)

pin(HD44780_BL, PB1, OUTPUT)

then

make menuconfig

then make

then you have your hex file ethersex.hex

upload this file to your avr / netio .

I have a atmega32 inside, and it is filled up to the top. so space is an issue here.

99.8% full 🙂

I have activated i2c, 1wire, dht, hd44780, vfs, httpd


Jan 31 2012

Tqfp programmer :-)

Isn’t that cute ? 🙂 an isp programable adapter for TQFP’s

20120131-075644.jpg


Sep 15 2008

AVR: ADC einfach auslesen

 

// ADC STUFF
uint16_t ReadChannel(uint8_t mux)
{
  uint8_t i;
  uint16_t result;
 
  ADMUX = mux;                      // Kanal waehlen
  ADMUX |= (0<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
 
  ADCSRA = (1<<ADEN) | (1<<ADPS1)| (1<<ADPS2) | (0<<ADPS0);    // Frequenzvorteiler
                               // setzen auf 8 (1) und ADC aktivieren (1)
 
  /* nach Aktivieren des ADC wird ein “Dummy-Readout” empfohlen, man liest
     also einen Wert und verwirft diesen, um den ADC “warmlaufen zu lassen” */
  ADCSRA |= (1<<ADSC);              // eine ADC-Wandlung
  while ( ADCSRA & (1<<ADSC) ) {
     ;     // auf Abschluss der Konvertierung warten
  }
  result = ADCW;  // ADCW muss einmal gelesen werden,
                  // sonst wird Ergebnis der nächsten Wandlung
                  // nicht übernommen.
 
  /* Eigentliche Messung – Mittelwert aus 4 aufeinanderfolgenden Wandlungen */
  result = 0;
 

  for( i=4; i>=1; i– )
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung “single conversion”
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    result += ADCW;      // Wandlungsergebnisse aufaddieren
 //if (ADCW <= 350){lo++;lo1+=ADCW;}else{hi++;hi1+=ADCW;}

  }
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)
 

// if (lo>=hi){lo1/=lo; result=hi1;} else {hi1/=hi;result=hi1;}

  result /= 4;                     // Summe durch vier teilen = arithm. Mittelwert
 
 
// mux==5?uart_puts(“5: “):uart_puts(“7: “);
 // Ausgabe an UART
   // if (debug==1)
  
 
  /* uart_puts(itoa((1024-result),h,10));

 
   uart_puts(“\n\r”);
 
*/

 

 
    
  return result;
}
 


Sep 15 2008

avr: prellfreier taster in C

mit einem taster 4 befehle durchtoggeln

#define F_CPU 1e6
#include <util/delay.h>
#include <avr/io.h>
#include <stdio.h>
int main(void)
{
 char a=0;
 DDRD = 0x60;     
   PORTD = 0x00;    

   while(1)
 {

     if (PIND & (1<<PIND2)) {

  if (a==0) {PORTD = 0x20;a=1;}
  
  else if (a==1) {PORTD = 0x40;a=2;}

  else if (a==2) {PORTD = 0x60;a=3;}

  else if (a==3) {PORTD = 0x00;a=0;}
  
  _delay_ms(150);

  while (PIND & (1<<PIND2)) {}

 
  }

 

 }

 
}