Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Využití jednoho A/D převodníku s více vstupy

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
agadirCZ44



Založen: Jan 05, 2015
Příspěvky: 17

PříspěvekZaslal: po březen 13 2017, 21:52    Předmět: Využití jednoho A/D převodníku s více vstupy Citovat

Zdravím..
Mám takový problém A/D převodník používat umím ale jak ho nastavit aby po sobě (třeba každou 1ms) střídal vstupy (ADC0-ADC7) a zapsal si každou hodnotu kterou změřil ? díky za nějaký nástřel v cčku Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: po březen 13 2017, 22:17    Předmět: Citovat

Víš, my už jsme přestali leštit křišťálový koule a zkoumat, co máš třeba Ty za převodník.

Ale obecně to převodníky neumí, musíš navzorkovat, přečíst, uložit někam do paměti, přepnout na další vstup atd.

_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
agadirCZ44



Založen: Jan 05, 2015
Příspěvky: 17

PříspěvekZaslal: po březen 13 2017, 22:27    Předmět: Citovat

jo pardon myslím ATMEGA16A
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: po březen 13 2017, 22:34    Předmět: Citovat

kód:

uint8_t buff[8];
volatile uint8_t int_buff[8];
volatile uint8_t int_i;

// every 1 ms

ISR TCNT0_OVF
{
    int_buff[int_i] = adc_get_value();
    int_i++;
    int_i = int_i & 0x03;
    adc_set_channel(int_i); // [edit1, přepnutí kanálu až po převodu]
}

setup()
{
    adc_setup();
    adc_set_channel(0);
   
    tcnt0_setup();
    interrupt_setup();
    sei();
}

loop()
{
  cli();
  memcpy( &buff ,  &int_buff, 8);
  sti();
  printf("ADC0=%d\n", buff[0]);
  printf("ADC1=%d\n", buff[1]);
  printf("ADC3=%d\n", buff[3]);
}


Smajlíky umí někdy otravovat. Je lepší to dávat do CODE. ZdenekHQ

edit1, přepnutí kanálu až po převodu


Naposledy upravil frpr666 dne út březen 14 2017, 17:20, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4507
Bydliště: Košice

PříspěvekZaslal: út březen 14 2017, 12:19    Předmět: Citovat

Po prepnuti vstupu je nutne chvilku pockat a az tak spustit prevod, vid datasheet.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
agadirCZ44



Založen: Jan 05, 2015
Příspěvky: 17

PříspěvekZaslal: po březen 20 2017, 13:00    Předmět: Citovat

no to čekání je právě problém... můj původní plán byl že bude každých 500us odebírat jedno napětí tím pádem 4ms by zabrala celá smyčka. Ale aby nevznikaly přeslechy tak to nejde dostat pod 7ms (56ms smyčka) což je strašně moc a ekvalizér který stavím by se stal skoro nepoužitelným...

Není na to nějaký fígl jak to zrychlit aspoň na 1ms ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: po březen 20 2017, 13:20    Předmět: Citovat

To je teda pěkně línej převodník. I externí za pár desítek korun a se seriovou komunikací umí běžně 100ksps.

Ty za stovku mají i 8 vstupů, třeba MCP3208. Dají se i přetaktovat výš za cenu ztráty rozlišení.

_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: po březen 20 2017, 13:43    Předmět: Citovat

ADC kanál lze měnit i v průběhu převodu, přepne se až po skončení běžícího převodu.

Když použiješ jednoduchý převod (v registru ADCSRA nastavíš bit ADCS), tak první převod po zapnutí bude trvat 25 cyklů A/D převodníku, další pak 13 cyklů. To při frekvenci 200kHz A/D vychází na 125µs pro první, na další pak 65µs. Když Ti bude stačit nižší rozlišení (8bitů), lze A/D převodník taktovat až na 1MHz.

A/D převodník v ATMega16 není tak línej Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
agadirCZ44



Založen: Jan 05, 2015
Příspěvky: 17

PříspěvekZaslal: po březen 20 2017, 13:58    Předmět: Citovat

tak není tak línej jen já se to musím naučit Smile díky za rady Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
agadirCZ44



Založen: Jan 05, 2015
Příspěvky: 17

PříspěvekZaslal: po březen 20 2017, 14:12    Předmět: Citovat

tak jsem zvedl taktovací frekvenci převodníku z 125kHz na 1Mhz a už to běží Smile díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: po březen 20 2017, 14:29    Předmět: Citovat

Jenom pak rozlišení je 8 bitů, ne 10. A jestli používáš režim "volný běh", tak nezapomeň, že změna kanálu v ADMUX má efekt až na třetí převod, ne na druhý. Docela sem se s tím natrápil Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4507
Bydliště: Košice

PříspěvekZaslal: po březen 20 2017, 14:33    Předmět: Citovat

Nechces pouzit toto MSGEQ7
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund