[Tiny13][C] Obsługa ADC ...

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 25 lip 2009, 9:09

Cóż, jeśli do OCR0A wpiszemy wartość 0, to wypełnienie na wyjściu wynosi niecałe 0,5%, natomiast po wpisaniu wartości 255 będzie wynosiło pełne 100%. Receptą na to jest negacja stanów na wyjściu, czyli po prostu zmiana reakcji wyjścia przy porównaniu. Wystarczy ustawić bit COM0A0 w rejestrze TCCR0A. Wtedy wypełnienie będzie wynosiło 0% przy OCR0A równym 255, oraz około 99,5% przy OCR0A=0.

Awatar użytkownika
mictronic
-
Posty: 81
Rejestracja: 04 paź 2006, 19:28
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: mictronic » 25 lip 2009, 11:38

Ciekawy pomysł,dobrze ze wiem teraz o co chodzi .Ale zrobię porostu warunek kiedy wartość adc jest równa 0,ustaw na porcie 0 i wyłącz PWM.

Pikczu-Można spróbować coś niecoś zdziałać wspólnymi silami.Ja w każdym razie chętnie pomogę.

Mam teraz taki kod:

Kod: Zaznacz cały

#include <avr/io.h>             
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/math.h>

int a;

int main(void)
{
DDRB=0b00011001;
PORTB=0b00001000;
TCCR0A = 0b10000011;
TCCR0B = 0x01;

ADCSRA|=_BV(ADEN)|_BV(ADSC)|_BV(ADATE)|_BV(ADIE)|_BV(ADPS0)|_BV(ADPS1)|_BV(ADPS2);
ADMUX|=_BV(MUX0)|_BV(ADLAR);

sei();


while(1)
{
a=ADCH;
if (a<5)
{ 
TCCR0A=0b00000000;
PORTB=0x00;
}
else
{
a-=39;
a*=2.9;
TCCR0A=0b10000011;
OCR0A=a;
}
}

}
//2,45-125
//0,77-39
PWM nie reaguje na zmianę napięcia na adc,kiedy usunę przeliczanie ,działa.

Awatar użytkownika
Aro
Użytkownik
Posty: 677
Rejestracja: 30 paź 2006, 18:49
Lokalizacja: Świerczyniec | Wrocław
Kontakt:

Post autor: Aro » 26 lip 2009, 8:55

a*=2.9 na liczbach całkowitych? Wiesz, lepiej zmień to na sekwencję a*=93; a>>=5; albo coś w tym stylu.

Awatar użytkownika
mictronic
-
Posty: 81
Rejestracja: 04 paź 2006, 19:28
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: mictronic » 26 lip 2009, 22:35

Efekty:
Napisałem jednak w bascomie : / Chciałem napisać w C ale okazał się zbyt wrażliwy. Bascom jest jednak bardzo odporny na chamskie operacje na zmiennych :P.Za mało doświadczenia jeszcze niestety,postaram się i obiecuje dalsza naukę C :)

Dziękuje za pomoc .

Pozdrawiam Mictronic!

ODPOWIEDZ