Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

M8L na 3V i przetwornik ADC

Awatar użytkownika
XAX
-
-
Posty:48
Rejestracja:4 kwie 2003, o 06:11
Lokalizacja:Krakow
M8L na 3V i przetwornik ADC

Postautor: XAX » 10 sie 2007, o 06:34

Witam

Mam ciekawy problem.

Procesor Atmel Mega8L taktowany wewnętrznym zegarem 4MHz zasilanie 3V
Teoretycznie wszystko działa poza przetwornikami analogowo cyfrowymi.
W momencie wywołania funkcji Getadc(0) procesor zamiera.

Uproszczony listng programu:

$regfile = "m8def.dat" ' typ procesora
$crystal = 4000000 ' czestotliwosc kwarcu

Config Pinc.0 = Input
Config Pind.5 = Output 'led
Dim V As Word

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Do
V = Getadc(0)
If V > 100 Then
Reset Portd.5
Else
Set Portd.5
End If
Loop
End

Czy ktoś miał styczność z takim problemem????

RcTomek
-
-
Posty:357
Rejestracja:18 lip 2005, o 17:28
Lokalizacja:Głogów / Wrocław

Re: M8L na 3V i przetwornik ADC

Postautor: RcTomek » 10 sie 2007, o 09:46

Po V = Getadc(0) daj pętlę opóźniającą np. waitus 520, ponieważ czas przetwarzania nie jest stały i waha się od 125 do 520 us. Wypróbuj to:

Kod: Zaznacz cały

$regfile = "m8def.dat" $crystal = 4000000 Config Pind.5 = Output 'led Dim V As Word Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc Do V = Getadc(0) waitus 520 If V > 100 Then Reset Portd.5 Else Set Portd.5 End If Loop End

Awatar użytkownika
XAX
-
-
Posty:48
Rejestracja:4 kwie 2003, o 06:11
Lokalizacja:Krakow

Postautor: XAX » 20 sie 2007, o 23:16

Witam

Problem rozwiązany.
Wstyd się przyznać ale problem tkwił w elektronice a nie w programie.

Ddevil
Zrobiłem program bez opóźnienia i działa poprawnie.
Czy orientujesz się może jaki błąd pomiarowy może być bez stosowania opóźnienia na przetworzenie danych przez przetwornik???

RcTomek
-
-
Posty:357
Rejestracja:18 lip 2005, o 17:28
Lokalizacja:Głogów / Wrocław

Postautor: RcTomek » 21 sie 2007, o 09:47

Nie bardzo. W bascom'owym helpie czas przetwarzania to max 520us, natomiast według danych z karty katalogowej m8 ten czas waha się od 65 do 260us. Możesz więc poeksperymentować i sprawdzić jaki wynik daje program z pętlą opóźniającą oraz bez niej. Aż tak bardzo zależy Ci na szybkości programu?

Awatar użytkownika
XAX
-
-
Posty:48
Rejestracja:4 kwie 2003, o 06:11
Lokalizacja:Krakow

Postautor: XAX » 21 sie 2007, o 20:12

Witaj

Na szybkości nawet mi aż tak strasznie nie zależy. Aczkolwiek mam napisany program który robi cztery pomiary z przetwornika na sekundę. Ale to da się zmienić. Jeszcze raz dzięki za pomoc.

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 6 paź 2007, o 08:33

wydaje mi się że nie trzeba dawac dodatkowego opóznienia. Procedura Getadc() po prostu trwa tyle ile trwa pomiar. Po wyjściu z tej procedury jest już po pomiarze. Więc opóznienie po tej procedurze jest zbedne.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 45 gości