yo9hnf Postat Decembrie 9, 2011 Autor Partajează Postat Decembrie 9, 2011 Ma poate lamurii cineva cum se realizeaza un tahometru? Am reusit sa fac uC-ul sa numere impulsurile primite de la un buton, dar problema e cu baza de timp. Unitatea de masura pentru turatie este rot/min -> rotatiile le numar cu un contoar, dar cum ma raportez la minut pentru a afla rpm ? Link spre comentariu
nico_2010 Postat Decembrie 9, 2011 Partajează Postat Decembrie 9, 2011 Folosesti TIMER0 ca baza de timp si TIMER1 ca numarator.Pentru a seta TIMER0 ca baza de timp cauta pe google "AVR timer calculator" sau apeleaza la foaia de catalog a uC si la notele de aplicatii cu timere ale aceluiasi uC.Si pana la urma ai reusit sa faci programul cu DS1307 sa functioneze? Link spre comentariu
godFather89 Postat Decembrie 9, 2011 Partajează Postat Decembrie 9, 2011 Iti alegi o rezolutie de citire dorita (sa zicem 1 sec). Asta inseamna ca la fiecare secunda resetezi contorul. Cu o intrerupere externa (pe front urcator/coborator) incrementezi contorul. Pentru baza de timp de o secunda, poti folosi un timer (setat corespunzator) si o intrerupere (overflow/compare/etc.). In intrerupere afisezi turatia (turatie(rpm) = 60 * contor / baza_timp(s)) si resetezi contorul. Ceva in genul: volatile uint8_t timp_scurs = 0;volatile uint16_t contor = 0;ISR(EXT_INT_vect){ contor++;}ISR(TIMER_OVF_vect){ timp_scurs = 1;}main(){ ... while (1) { if (timp_scurs) { timp_scurs = 0; //opreste intreruperi, contor fiind modificat din intrerupere cli(); uint16_t aux = contor; sei(); uint16_t rpm = 60 * contor; //afisare rpm } }} Link spre comentariu
godFather89 Postat Decembrie 9, 2011 Partajează Postat Decembrie 9, 2011 Eram cam adormit... acum am observat ca e vorba de Bascom. Ignorati postul anterior Link spre comentariu
yo9hnf Postat Decembrie 21, 2011 Autor Partajează Postat Decembrie 21, 2011 Folosesti TIMER0 ca baza de timp si TIMER1 ca numarator.Pentru a seta TIMER0 ca baza de timp cauta pe google "AVR timer calculator" sau apeleaza la foaia de catalog a uC si la notele de aplicatii cu timere ale aceluiasi uC.Si pana la urma ai reusit sa faci programul cu DS1307 sa functioneze? Am intels...urmeaza...Cu DS1307 inca ma mai lupt. Link spre comentariu
yo9hnf Postat Decembrie 21, 2011 Autor Partajează Postat Decembrie 21, 2011 Am realizat pentru test montajul de aici : http://extremeelectronics.co.in/avr-tutorials/interfacing-ds1307-rtc-chip-with-avr-microcontroller/ ...si merge (!)....intr-un final : eu initial aveam rezistentele de pull-up de la DS1307 de 10k si nu mergea, am pus de 4k7 si tot nu mergea, i-am pus si bateria de back up si acum merge. Urmeaza sa ma mai chinui cu programul postat cu 2 pagini in urma. Link spre comentariu
yo9hnf Postat Decembrie 21, 2011 Autor Partajează Postat Decembrie 21, 2011 Merge si softul pe care l-am incercat initial. Am respectat cu "strictete" schema. Totusi ora nu merge reglata ; decat butonul de "minute" functioneaza, dar foarte greu - cred ca intre doua apasari citite trebuie sa treaca 2 secunde. Link spre comentariu
Cilibiu Postat Februarie 6, 2012 Partajează Postat Februarie 6, 2012 Salut, am si eu o dilema! Deci am un port de intrare EX: Config PORTD.0= inputdoIf Pind.0=0 then.....end ifloopIn multe aplicati puneam o rezistenta de 1k intre +5V si PORTD.0 iar comada se facea cu un buton push legat la masa! Toate bune, dar am simulat cu urmatoarea comanda in plus, in simulator este OK dar in realitate cum e? se arde MCU? Asta ca sa scap de rezistenta externa! Config PORTD.0= inputSet PORTD.0doIf Pind.0=0 then.....end ifloopEu ma gandesc ca este ca un scurt! Prin datasheet nu zice nimik de aceasta treaba! Un port folosit ca intrare dar setat ca iesire! Link spre comentariu
XAN77 Postat Februarie 6, 2012 Partajează Postat Februarie 6, 2012 ba zice si prin datasheet. Ce ai facut tu acolo este activarea pull_up-ului intern la pinul respectiv. Rezultatul este cel care il doresti, renuntarea la rezistenta externa. Link spre comentariu
nickrvl Postat Februarie 6, 2012 Partajează Postat Februarie 6, 2012 Salut, am si eu o dilema!Deci am un port de intrare EX: Config PORTD.0= inputdoIf Pind.0=0 then.....end ifloopIn multe aplicati puneam o rezistenta de 1k intre +5V si PORTD.0 iar comada se facea cu un buton push legat la masa!Toate bune, dar am simulat cu urmatoarea comanda in plus, in simulator este OK dar in realitate cum e? se arde MCU?Asta ca sa scap de rezistenta externa!Config PORTD.0= inputSet PORTD.0doIf Pind.0=0 then.....end ifloopEu ma gandesc ca este ca un scurt!Prin datasheet nu zice nimik de aceasta treaba!Un port folosit ca intrare dar setat ca iesire!Confirm si eu ca merge, aici un mic exemplu pentru aprindere led la apasarea unui buton pentru un Attiny13:$regfile = "attiny13.dat"Ddrb = &B111111$hwstack = 16$swstack = 16$framesize = 16$noramclearDdrb = &B111100Pinb.4 = 1 'inButon Alias Pinb.4 'inLed Alias Portb.3 'outDo If Buton = 0 Then Led = 1 Else Led = 0 End IfWaitms 20LoopEnd Link spre comentariu
Cilibiu Postat Februarie 7, 2012 Partajează Postat Februarie 7, 2012 Cand am folosit comada asta "PIN.D=1" la un atmega8535 , o cam lua razna isirile care erau configurate pentru pinul respectiv!De aceea am intrebat!Acum nu stiu cum se comporta comanda "SET PORTD", si nici nu as vrea sa ard vreun port! Link spre comentariu
nico_2010 Postat Februarie 7, 2012 Partajează Postat Februarie 7, 2012 Comanda "PINX.Y" este indica utilizarea portului x, pinul y ca intrare."Set (sau Reset) Portx" indica utilizarea portului x ca port de iesire si poate fi cu rezistentele pull-up activate (set), respectiv dezactivate (reset), cu unele exceptii prevazute in foaia de catalog. Link spre comentariu
Cilibiu Postat Februarie 8, 2012 Partajează Postat Februarie 8, 2012 Stiu comenzile cu PIN si PORT, dar tot nu am inteles treaba cu rezistentele PULL-UP, deci sa inteleg ca in coamanda din 0-1 si invers se face cu rezistente? in interiorul MCU? Link spre comentariu
DarkAngel_Bv Postat Februarie 9, 2012 Partajează Postat Februarie 9, 2012 Nu. In loc sa pui tu rezistenta externa de pull-up are el integrat dar sunt dezactivabile. Link spre comentariu
XAN77 Postat Februarie 9, 2012 Partajează Postat Februarie 9, 2012 dacai ai fi citit cu atentie datasheet la capitolul porturi, nu ar mai fi atatea discutii pe marginea subiectului pull-up Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum