JednoduchA programova rutina - AD
Moderátori: Merak, Moderátori
JednoduchA programova rutina - AD
zdravím všetkých avr-specialistov
prosím napíšte mi "NIEKDO"jednoduchu programovu rutinu
pre attiny13a potrebujem toto:
...prečitaj adc hodnotu na pineč.5
...ak je adc hodnota menšia ako 200 tak pinč.6 je LOW
...ak je adc hodnota väčšia ako 200 tak pinč,6 je HIGH
... v nekonečnej slučke ???
vopred dakujem
prosím napíšte mi "NIEKDO"jednoduchu programovu rutinu
pre attiny13a potrebujem toto:
...prečitaj adc hodnotu na pineč.5
...ak je adc hodnota menšia ako 200 tak pinč.6 je LOW
...ak je adc hodnota väčšia ako 200 tak pinč,6 je HIGH
... v nekonečnej slučke ???
vopred dakujem
0
Re: ATMEL ATMEGA8
jp1 napísal:zdravím všetkých avr-specialistov
prosím napíšte mi "NIEKDO"jednoduchu programovu rutinu
pre attiny13a potrebujem toto:
...prečitaj adc hodnotu na pineč.5
...ak je adc hodnota menšia ako 200 tak pinč.6 je LOW
...ak je adc hodnota väčšia ako 200 tak pinč,6 je HIGH
... v nekonečnej slučke ???
vopred dakujem
Pin 5 (v DIL puzdre) nie je vstup pre A/D prevodnik. Dal som ti to na pin 7.
Tu je kod + hex v prilohe
Kód: Vybrať všetko
#define F_CPU 9600000UL
#include <avr/io.h>
#define ADC_CHANNEL 1 // (PB2, pin 7)
#define OUTPUT_BIT 1 // (PB1, pin 6)
// Run single A/D conversion and return result
unsigned int read_adc() {
// Start the AD conversion
ADCSRA |= (1 << ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1 << ADIF)) == 0);
// Clear flag
ADCSRA |= (1 << ADIF);
return ADC;
}
int main(void)
{
// Init I/O
DDRB |= (1 << OUTPUT_BIT);
// Init ADC
// - channel: ADC_CHANNEL (pin PB2)
// - reference: Vcc
// - ADC prescaler: /64 (150kHz @ 9.6MHz)
ADMUX = ADC_CHANNEL;
ADCSRA = (1 << ADEN) | (1 << ADPS1) | (1 << ADPS2);
while(1)
{
if (read_adc() < 200)
PORTB &= ~(1 << OUTPUT_BIT);
else
PORTB |= (1 << OUTPUT_BIT);
}
}
- Prílohy
-
- ADC_tiny13.hex
- (238 Bajtov) 22 stiahnutí
0
Re: ATMEL ATMEGA8
Prvom rade díki za rutinu!!!
neuvedomil som si že pin č.5 nieje"adc" išlo mi vlastne o princíp a nie o konkrétny pin
môžeš mi ešte poradiť ako nastaviť configuration bits pre toto konkrétne zapojenie
neuvedomil som si že pin č.5 nieje"adc" išlo mi vlastne o princíp a nie o konkrétny pin
môžeš mi ešte poradiť ako nastaviť configuration bits pre toto konkrétne zapojenie
0
Re: JednoduchA programova rutina - AD
ok
nebudem nič meniť aj tak mam len zle skúsenosti ...
minule sa mi totiž to podarilo zamknúť 2 atmega8čky
tak teraz musím kúpiť novú aby som ich skúsil "zobudiť...
nebudem nič meniť aj tak mam len zle skúsenosti ...
minule sa mi totiž to podarilo zamknúť 2 atmega8čky
tak teraz musím kúpiť novú aby som ich skúsil "zobudiť...
0
Re: JednoduchA programova rutina - AD
nemáš náhodou nejake rozumné slovenske vysvetlivky na nastavovanie fuse bitov
0
Re: JednoduchA programova rutina - AD
kusok je prelozene tu na strane 15
http://svetelektro.com/clanky/kniha-pro ... c-557.html
http://svetelektro.com/clanky/kniha-pro ... c-557.html
0
Re: JednoduchA programova rutina - AD
pre mňa je dôležite ako označiť bity keď použijem externý kryštál ako označiť bity pre vnútorný oscilátor
0