 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 08 09, 23:23. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Atmega32 ADC
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
Atmega32 ADC |
Parašytas: 2008 01 15, 18:45 |
|
|
|
Sveiki. Patarkit kas galit, bandau ismokti pasijungti atmegos adc bet truksta
ziniu, zodziu nusikopinau kitam mikrovaldikliui parasyta programa is
http://www.123avr.com/z11.htm ir bandziau pakurt ant atmegos tik
copy ir paste =s
cia programa
#include <mega32.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x00
interrupt [ADC_INT] void adc_isr(void) {
PORTB=(unsigned char) ~ADCW;
delay_ms(20);
ADCSR|=0x40;
}
void main(void) {
PORTB=0xFF;
DDRB=0xFF;
ADCSR=0x8E;
#asm("sei")
ADMUX=0;
ADCSR|=0x40;
while (1);
}
viskas lyg ir tinka tik jei neklystu nesuveikia pertauktis
tikiuosi patarsit ka cia galima pataisyt kad veiktu |
|
|
|
|
 |
Atmega32 ADC |
Parašytas: 2008 01 15, 19:26 |
|
|
|
Siūlyčiau Codevision kompiliatorių pabandyti, ten yra code generator, sudedi varneles kur reikia ir turi reikiamas funkcijas. |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
 |
Atmega32 ADC |
Parašytas: 2008 01 15, 21:33 |
|
|
|
Gaunasi lb panasiai
#include <mega32.h>
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
}
// Declare your global variables here
void main(void)
{
PORTB=0xFF;
DDRB=0xFF;
// ADC initialization
// ADC Clock frequency: 57,656 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x8E;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}
1. nelabai dar suprantu kokia funkcija atlieka Vref
2. po eilute adc_data=ADCW; reikia parasyt PORTB=adc_data;
3. kai ivyksta pertauktis prog. vykdymas persoka
i interrupt [ADC_INT] void adc_isr(void) ir vykdo
kas yra tarp skliaustu {}
dar nelabai suprantu kaip viskas turi buti  |
|
|
|
|
 |
 |
Atmega32 ADC |
Parašytas: 2008 01 15, 23:43 |
|
|
|
Vref'as yra atraminė matavimo įtampa, ją gali nustatyti programiškai kad būtų 5V arba per Vref pin'ą pasiduodi kiek nori 0 - Vcc ribose.
Dar paprasčiau tariant:
kai vref 5v, matuojama nuo 0V iki 5V, 0.05V žingsniukais,
kai vref 1, matuojama nuo 0V iki 1V, 0.01V žingsniukais... |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
Atmega32 ADC |
Parašytas: 2008 01 16, 00:02 |
|
|
|
Pastebejau per watch kad adresas skiriasi
pagal orginala IntADC 0x0000
pagal mano IntADC 0x0020
Ir pas mane viskas sukasi tik main funkcijoje o ten kai
programa vyksta ties while persoka i interrupt
niekaip neatkapstau kame cia reikalas |
|
|
|
|
 |
 |
Atmega32 ADC |
Parašytas: 2008 01 16, 00:10 |
|
|
|
padaryt, kad vrefas butu nuo maitinimo, jei neprijungiai jo niekur.
Kodas: |
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x82; |
Su interuptais aš niekad nebandžiau, toks turėtu irgi veikti.
Kodas: |
#include <mega32.h>
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x82;
while (1)
{
//PORTB = read_adc(1);
};
}
|
|
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |