ADC převodník ATmega8 versus ADC ATmega644p - Bascom

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

ADC převodník ATmega8 versus ADC ATmega644p - Bascom

#1 Příspěvek od michalino »

Ahoj všem,

prosím Vás o radu a pomoc..

Jaký je rozdíl mezi ADC převodníkem ATmega8 a ADC převodníkem ATmega644p?

U atmega 8 používám toto nastavení
Config Adc = Single , Prescaler = Auto , Reference = Internal

jednak u Atmega644p musím smazat to Reference=internal, jinak to nefunguje, tedy:
Config Adc = Single , Prescaler = Auto


U atmega8 vše funguje správně (potenciometr na ADC), ale u Atmega644p hodnota, kterou získávám z převodníku, která je v romezí 0-4999 samovolně vzrůstá i když potenciometr mám v klidu....

děje se to, že hodnota kolísá dle nastaveného potenciometru +-10 jednotek...ale pomaličku vzrůstá, tzn. kdyby hodnota dle potenciometru byla na začátku 100, tak za dvě hodiny se samovolně dostane na 4999..

čím to prosím může být nebo setkali jste se s tímto někdy?

Na Atmega8 se mi to neděje, tam vše normálně chodí.

Díky


(pročítám, že v AVR je "sample-and-hold capacitor" a s tím prý může být nějaký problém.

DODATEK: S atmega8 jsem zkoušel jen tento jeden potenciometr měřit a vše v pořádku a u ATmega644p chci zapojit 5 potenciometrů....

zatím mám zapojeny k Atmega644p 3 potenciometry a se třemi zapojenými potenciometry to zkouším a vám popisuju.... u dvou je vše v pořádku, pouze tento jeden hapruje, ovšem je to ten samý potenciometr, který jinak zkouším na Atmega8
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#2 Příspěvek od AB1 »

Mega644 má dvě interní reference: 1.1V a 2.56V.

Napiš

Kód: Vybrat vše

Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1 
nebo

Kód: Vybrat vše

Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56 

Přesnou hodnotu referenčního napětí pak změř na pinu AREF.
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#3 Příspěvek od michalino »

AB1, dobrý den.

Děkuji, vyzkouším v kódu co píšete a napíšu Vám, jak to dopadlo.
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#4 Příspěvek od michalino »

Dobrý den AB1 a všem...

nefunguje to. Změny tam jsou, ale nefunguje to, stále ten duch vzrůstajících hodnot.
Už zkouším ADC různě, nyní i s napěťovým děličem.

(podotýkám znovu s ADC jsem neměl nikdy problémy kromě teď čipu atmega644p, na kterém zkouším ověřené postupy z nižších AVR (atmega8,16,32) )

problém je to, že hodně skáčou hodnoty´...a navíc postupně se hodnota napětí klidového stavu, např. napěťového děliče, který teď aktuálně testuju zvyšuje až na nejvyšší hodnotu (napětí měřím na pinu A3 a přepočítávám do ADC hodnot 0 - 4999, které si zobrazuju na LCD)

V klidovém stavu mám na pinu A3 měřit 2500 jednotek, což je v pořádku, ale to se samo zvýší během hodiny až na 4000, což na nižších AVR mi nedělá, pouze tady....

už to nechápu, ale bude to osobní boj...už jsem zkoušel odrušování 100n kondenzátory, ale nepomohlo (avref,avcc)
Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 00:00
Bydliště: Bratislava

#5 Příspěvek od iginoiii »

pre istotu taka obligátna otázka: skúšal ste viac procesorov atmega644 zapojiť, a pri všetkých(najmenej dvoch) máte tú istú chybu?
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#6 Příspěvek od michalino »

Dobrý den, ano, zkoušel jsem to u dvou, u obou je stejná chyba
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#7 Příspěvek od Andrea »

Když ten procesor zresetuješ, tak se to okamžitě vrátí na 2500?
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#8 Příspěvek od michalino »

Dobrý den Andreo,

to jsem nezkoušel, vyzkouším hned jak se k čipu dostanu. Díky všem za rady a náměty.

PS: Prozatím informace: když čip vypnu zapnu od napětí, děje se to samé, začíná to od 2500 a hodnota jde nahoru .... když ho přeprogramuju, také se děje to samé, začíná od 2500 a jde nahoru
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#9 Příspěvek od Andrea »

Víš co je to reset?
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#10 Příspěvek od AB1 »

Filtrační kondenzátory 100n nemáš zkoušet, ty mají být trvale na VCC, AVCC, AREF proti zemi.

Jsou propojeny piny GND?
Je AVCC spojeno s VCC?
Je v pořádku zdroj?

Případně nám ukaž celý kód.
Uživatelský avatar
michalino
Příspěvky: 348
Registrován: 03 srp 2009, 00:00

#11 Příspěvek od michalino »

Tak jsem vše přenesl na zkušební desku nepájivé pole a zkusil jsem vše zapojit mimo plošňák a hlavně s kratšíma drátkama k napěťpvému děliči, který už jsem měl z pokusů pocínovaný až až..a to byl asi problém

AVCC a AREF jsem zapojil u atmegy8 i 644 takto:
http://avrmercubuana.files.wordpress.co ... dc_lcd.jpg

vše funguje, nechápu to, nebo spíš chápu, je to ten plošný spoj. Ale fakt je, že odstupuju od zbytečně velkého Atmega644 na atmega8, protože mám zbytečně nevyužité místo pro programový kód, byl to spíš hec tenhle obvod a prostě na atmega8 dosahuju i lepších hodnot měření - méně kolísá měření ADC. Sice na atmega8 chybí pár pinů pro připojení více diod, které "zobrazují" hodnotu a/d převodníku alias bargraf = od červených diod přes oranžové do zelených, ale raději pohodlná, zlatá atmega8 bez jakýchkoliv problémů.

Všem vám chci poděkovat za pomoc a nezlobte se, že to bylo mou vinou, musím poctivěji udělat plošňák, možná opravdu i to zapojení s tlumivkou a dvěma 100n kondenzátorama udělalo své.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“