-
Data: 2009-02-06 17:07:00
Temat: czyzby bug w atmega640?
Od: "Greg\(G.Kasprowicz\)" <G...@C...CH> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Hej
mam sobie taki problem w mega640
jest sobie ADC, pedzony z 250kHz, trygerowany z timera T0, sygnalem compare
MATCHA
no i wszystko smiga pieknie, dostaje przerwania od ADC co zalozony czas.
Dla celow debugowych sobie wlaczylem generacje sygnalu prostokatnego na OC0A
Problem jest gdy wylacze przerwanie od T0 - ADC staje, pomimo ze sygnal na
OC0A sobie nadal jest..
Na razie rozwiazalem to tak:
void (TIMER0_COMPA_vect) (void) __attribute__ ((signal, __INTR_ATTRS))
__attribute__((naked));
void (TIMER0_COMPA_vect) (void)
//timer 0 interrupt - not used, T0 is used to generate the ADC clock only
//SIGNAL(TIMER0_COMPA_vect) //debug interrupt ftom timer 0
{
asm("reti");
}
czyli pozwalam mu wejsc do przerwania po to by zaraz wyjsc.
Dziala, ale to nieeleganckie.
Ma ktos z Was pomysl o co chodzi?
Wyglada tak, jakby cos blokowalo przerwanie od ADC. Czyzby nieobsluzone
wylaczone przerwanie od T0? troche to bez sensu, aczkolwiek kiedys
przerabialem taki problem w prockach Cypressa.
konfiguracja ADC:
//ADC init, ext REF,left adjust (8 bit mode), MUX= ADC0, MUX5 switches
between ADC15..8 and ADC7..0
ADMUX = (1<<ADLAR);
//enable ADC,start first conversion, auto trigger enabled,enable ADC
interrupt,
ADCSRA = (1<<ADEN)| (1<<ADATE)| (1<<ADIE)| (1<<ADPS2) | (1<<ADPS0);
//mux5 disabled,enable triggering by the timer T0 compare match A - CTC
mode
ADCSRB = (0<<MUX5) | (1<<ADTS1)| (1<<ADTS0);
konfiguracja T0
TCCR0A = (1<<WGM01) | (1<<COM0A0) ; // mode CTC
TCCR0B = (0<<CS01)|(0<<CS00); // prescaller /64 -> 250kHz -> 4us clk
period,//stop T0 at the moment
OCR0A = 100; //enter some value to avoid generation of excessive interrupts
TIMSK0 = (1<<OCIE0A); // enable T0 interrupts.
ADCSRA |= (1<<ADIF); //clear pending ADC interrupts
ADCSRA |= (1<<ADSC); //start 1-st conversion
Najnowsze wątki z tej grupy
- "Teleportacja" polskich statków na pd. Bałtyku - rosyjska zabawa w zakłócanie GPS, Galileo, Beidou i GLONASS
- W trakcie porwania prez. Maduro wojsko USONA użyło tajnej broni masowego rażenia: Discombobulator
- antena gsm - kabel - antena gsm
- PID - jeszcze raz
- Zlacze w mikrofonie z lat 80-tych
- Żywica żółknie od UV i wody :(
- Zawory termostatyczne
- Schemat automatyki
- Teoretyczne zagadnienie - ogrzewanie budynku
- Zagadka radiowa
- Prostownik
- Nowy akumulator Donut Lab
- Pilot do zamka/bramy
- Jaka myjka ultradźwiękowa?
- Retro organizer ale współcześnie
Najnowsze wątki
- 2026-01-29 KSeF - 13 wątpliwości
- 2026-01-29 A ja się pochwalę
- 2026-01-29 Warszawa => Mid/Senior IT Recruiter <=
- 2026-01-29 Warszawa => Senior Java Developer <=
- 2026-01-29 Warszawa => IT Recruiter <=
- 2026-01-28 Degradacja
- 2026-01-28 Wysoki Sąd poinstruował czego unikać wyzywając Owsiaka "Równiejszego"
- 2026-01-28 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2026-01-28 Białystok => Preseles Inżynier (background baz danych) <=
- 2026-01-28 Wrocław => Konsultant wdrożeniowy ERP <=
- 2026-01-28 Łódź => Microsoft Engineer <=
- 2026-01-28 Białystok => Tester manualny <=
- 2026-01-27 Tradycja ciągania posłów po sądach za wystąpienia w Sejmie będzie kontynuowana [Lepper 2]
- 2026-01-27 Pierwszy raz sprzedano więcej samochodów zeeletryfikowanych niż ice
- 2026-01-27 Elektryczny Kałasznikow




Jak kupić pierwsze mieszkanie? Eksperci podpowiadają