added start for 4.b1

This commit is contained in:
Sem van der Hoeven
2021-03-03 11:22:43 +01:00
parent 4d57eddb8f
commit bd2a5e6091
3 changed files with 171 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
/*
* opdracht 4.b1.c
*
* Created: 3-3-2021 10:54:49
* Author : Sem
*/
/************************************************************************/
/* Verander het programma (voor kanaal 3 en voor 8 bits) zodat het alleen een AD-conversie uitvoert
als jij dat wilt, dus op aanvraag. Maak daarvoor in main() een eindeloze lus met een wachtfunctie
en een start voor de ADC (Zie ook code in de repository). */
/************************************************************************/
#define F_CPU 10e6
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define BIT(x) (1 << (x))
// wait(): busy waiting for 'ms' millisecond
// Used library: util/delay.h
void wait( int ms )
{
for (int tms=0; tms<ms; tms++)
{
_delay_ms( 1 ); // library function (max 30 ms at 8MHz)
}
}
// Initialize ADC: 10-bits (left justified), free running
void adcInit( void )
{
ADMUX = 0b01100011; // AREF=VCC, result left adjusted, channel3 at pin PF3
ADCSRA = 0b11100110; // ADC-enable, no interrupt, start, free running, division by 64
}
// Main program: ADC at PF1
int main( void )
{
DDRF = 0x00; // set PORTF for input (ADC)
DDRA = 0xFF; // set PORTA for output
DDRB = 0xFF; // set PORTB for output
adcInit(); // initialize ADC
while (1)
{
PORTB = ADCL; // Show MSB/LSB (bit 10:0) of ADC
PORTA = ADCH;
wait(100); // every 100 ms (busy waiting)
}
}