/*
Main.h
Definities, vars en includes voor Grotendikken's brein
Pros 2007 ... 2008
*/
#define F_CPU 16000000UL
#define delay(x) _delay_loop_1(x)
#define reply_OK() uart_sendstr_P("OK\n")
#define PRG_RDB(x) pgm_read_byte(x)
#define EENHEDEN 88
#define ERR 77
#define HONDERDSTEN 99
#define MS100 13
#define MS1000 128
#define OFF 33
#define OK 0
#define ON 22
#define FREQ 60
#define PULS 61
#define SW_START 62
#define SW_END 63
#define SW_DELAY 64
#define SW_STEP 65
#define SWEEP 66
#define TXT 1
// Commando's voor Madwizard; ze moeten gelijk zijn aan hetgeen in Madwizard.c gedefinieerd is!
#define PWM 0x02
#define MAXCNT 0x03
#define PRESC 0x04
#define SHIFTDDR DDRB
#define SHIFTPORT PORTB
#define MW_DATA PB4
#define MW_INT0 PB3
#define MW_INT1 PB2
#define MW_RST PB1
#define MCLK 50000000UL
#define PH_MAX 4294967296UL
#define DDS_MAX 1800000000UL
#define DDS_MIN 800000000UL
#define DDS_D_PORT PORTB
#define DDS_D_DDR DDRB
#define DDS_C_PORT PORTB
#define DDS_C_DDR DDRB
#define DDS_E_PORT PORTD
#define DDS_E_DDR DDRD
#define DDS_CLK PB6
#define DDS_D PB7
#define DDS_EN PD4
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <compat/deprecated.h>
#include <util/delay.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef P
#define P(s) ({static const char c[] __attribute__ ((progmem)) = s;c;})
#endif
char *val, *ptr, cmd;
char txt_buffer[128];
char key_buffer[32];
char *key_ptr;
int result;
unsigned int FSEL, pause_time, key_time;
unsigned long W_DDS, W_DDS_start, W_DDS_end, new_freq;
unsigned char KB[16] = { 3, 6, 9, 'C', 2, 5, 8, 0, 1, 4, 7, '.', 'u', 'd', 'M', 'E' };
unsigned char linestart[5] = { 0, 0, 44, 20, 84 };
unsigned char hextekens[16] = "0123456789ABCDEF";
unsigned char KB_mode = FREQ;
unsigned char i, j, x, y, rxresult, status, Key, F_mode, F_honderdsten, FH_vlag;
unsigned int t, sweepdelay;
unsigned long F_eenheden; // Gewenste frequentie, via het KB opgegeven
volatile unsigned int M_maxcnt; // Instelling voor Madwizard (ICR1)
volatile unsigned int M_presc; // Instelling voor Madwizard (TCCR1B)
volatile unsigned int M_pwm; // Instelling voor Madwizard (OCR1B)
volatile double F_OUT; // Gewenste frequentie
volatile double F_DDS; // DDS-frequentie
volatile double FLOAT; // tmp voor floats
double pulsbreedte, sweep_start, sweep_end, sweep_step;
#include "Routines.c"
#include "UART.c"
#include "LCD.c"
#include "SHIFT.c"
#include "DDS.c"
#include "Version.c"