Hallo Dieter,
danke für die Seite werde sie mir gleich mal an sehen
Code:
/**************************************
mains.c
Autor: Numberfive
versuchen das ganze mal zu verstehen.
*************************************/
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 16000000 // 16 MHz
#define UART_BAUD_RATE 19200 // 19200 Baud
#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*161)-1)
typedef unsigned char BYTE;
typedef unsigned short WORD;
BYTE GetKeyCode(void); //routine zum lesen der tasten auf dem board
void InitCom(void);
void SendText(void);
void SendBinary(void);
int main (void)
{
//hauptprg hier geht der controler immer als erstes hin
InitCom();
sbi(PORTA,PINA7);
//pull ub widerstand einschalten warum weiß ich auch noch nicht
//Analogport init
outp((1<<ADEN) & 7,ADCSR); // teiler auf 7 damit der bei 16 Mhz Tut
BYTE Taste;
for(;;)
{
//endlos schleife für das haupt prg sonst hällt das prg an
Taste = GetKeyCode();
if ( Taste != 0)
{
switch(Taste)
{
case 1:
SendText();
break;
case 2:
SendBinary();
break;
}
}
}
}
BYTE GetKeyCode(void)
{
WORD Result = 0;
BYTE Taste = 0;
//Init ADwandler
ADCSRA = (1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)|(7<<ADPS2);
// wir messen Porta Pin 7
ADMUX = (1<<PINA7);
// was diese zeile bedeutet weiß ich nicht
sbi(ADCSRA,ADSC);
// warten bis messung abgesclossen ist und wert gültig
loop_until_bit_is_set(ADCSRA,ADSC);
// den wert aus dem register holen
Result = inw(ADCL);
// Wiederstands Netzwerk interpretieren
if (Result < 1010)
{
if(Result >= 410 && Result <= 450)
{
Taste = 1;
}
if(Result >= 340 && Result <= 380)
{
Taste = 2;
}
if(Result >= 265 && Result <= 305)
{
Taste = 3;
}
if(Result >= 180 && Result <= 220)
{
Taste = 4;
}
if(Result >= 100 && Result <= 130)
{
Taste = 5;
}
}
return Taste;
}
void SendText(void)
{
}
void SendBinary(void)
{
}
void InitCom(void)
{
/* Set baud rate */
UBRRH = (BYTE) (UART_BAUD_SELECT>>8);
UBRRL = (BYTE) UART_BAUD_SELECT;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);
}
so sieht es jetzt auch weiß du wie man eingänge im aver studio simuliert ?
Gruß und dank für deine mühe
Lesezeichen