Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


Postări Recomandate

Ca sa faci conversia in celsius scazi 32 si imparti la 1.8. Vezi daca se potriveste temperatura afisata cu ce ar trebui sa masoare.

Asa am facut. Initial am scazut si eu 32, dar imi iesea peste 40. Acum imi arata 23.62 gr. Celsius...dar de unde ai luat 1.8 pentru ca nu-mi dau seama acum ?
1.8 e din modul cum se face conversia intre F si C. Exact exact nici eu nu stiu cum dar asta e relatia intre cele doua.
Link spre comentariu
Poate ai vrut sa scrii "dim V as byte"

 

Nu vrea, inainte am incercat toate metodele, byte, word, single etc, i-mi zice ca sint prea mari sau ceva de genul, o sa postez diseara eroarea, acum sint la servici.

 

Iti atasez un cod de la un termometru cu LM35 care la iesire da o tensiune direct proportionala cu temperatura masurata...parca 1mV/grad C (PARCA!!!)

 

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC

 

Start Adc

 

Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte

 

Cls

Cursor Off

 

 

Do

W = Getadc(1)

Volt = W * 5

Volt_d = Volt Mod 10

Volt = Volt / 10

Locate 1 , 11

Lcd Volt ; "," ; Volt_d ; "C"

 

 

Waitms 500

Loop

End

Link spre comentariu

Iti atasez un cod de la un termometru cu LM35 care la iesire da o tensiune direct proportionala cu temperatura masurata...parca 1mV/grad C (PARCA!!!)

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADCStart AdcDim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As ByteClsCursor OffDo W = Getadc(1) Volt = W * 5 Volt_d = Volt Mod 10 Volt = Volt / 10 Locate 1 , 11 Lcd Volt ; "," ; Volt_d ; "C" Waitms 500 LoopEnd

Acest cod e testat pe ATtiny13? cum am mai spus eu cu acesta am probleme.....sper ca are ADC pentru ca eu asa vad in Datasheet, nu ma insel nu?
Link spre comentariu

@nickrvl

 

Nu conteaza pentru ce uC este programul. Eu de ex l-am testat pe ATMega32 (pentru ca pe asa il am pe placa de dezvoltare).

ATTiny13 are ADC0 pe pinul 1, ADC2 pe pin3, ADC3 pe pin2 . Deci practic cu acest uC poti masura 3 tensiuni.

 

La W = Getadc(1), in paranteza ai ADCul care te intereseaza. De ex, daca vrei sa masori o tensiune pe pinul 1 (ex practic : sa pui un LM35 pe pinul 1), o sa ai W=Getadc(0), pentru ca pe pinul 1 ai ADC0.

Link spre comentariu

@nickrvl

 

Nu conteaza pentru ce uC este programul. Eu de ex l-am testat pe ATMega32 (pentru ca pe asa il am pe placa de dezvoltare).

ATTiny13 are ADC0 pe pinul 1, ADC2 pe pin3, ADC3 pe pin2 . Deci practic cu acest uC poti masura 3 tensiuni.

 

La W = Getadc(1), in paranteza ai ADCul care te intereseaza. De ex, daca vrei sa masori o tensiune pe pinul 1 (ex practic : sa pui un LM35 pe pinul 1), o sa ai W=Getadc(0), pentru ca pe pinul 1 ai ADC0.

Intreb daca softul e "compatibil" cu ATtiny13 pentru respectiva eroare (in Bascom) numai la acest tip de Mc i-mi da, in rest Atmega8, ATtiny2313 (ce am incercat eu) nu e problema. Inca odata, e vorba strict de Bascom, acolo i-mi da eroare, atunci cind vreau sa compilez softul.

Am incercat multe softuri cu citire ADC cu atmega8 si attiny2313 si nu a fost problema, numai la acest 13 i-mi face figuri, incercati si voi softul in Bascom in varianta mea dar cu ATtiny13 ca Mc si atunci poate "vorbim aceasi limba".

Link spre comentariu

Am reusit, cum banuiam problema era de la attiny13, fiind mic la declararea variabilelor nu accepta decit "bit" iar acest bit nu poate lua decit valoarea 1 sau 0 si de aici toate erorile, una peste alta cu toate ca are ADC nu poate sa fie un voltmetru de exemplu, poate doar sa verifice daca are sau nu tensiune la pin.

Acesta e codul:

$regfile = "ATtiny13.DAT"$crystal = 1000000Config Portb.1 = OutputPortb.1 = 1Dim V As BitConfig Adc = Single , Prescaler = AutoStart AdcDoIf Getadc(0) = 1 Then Portb.1 = 1If Getadc(0) = 0 Then Portb.1 = 0LoopEnd

Iar asta e simularea in Proteus:

[attachment=0]13.jpg[/attachment]

Link spre comentariu

Am reusit, cum banuiam problema era de la attiny13, fiind mic la declararea variabilelor nu accepta decit "bit" iar acest bit nu poate lua decit valoarea 1 sau 0 si de aici toate erorile, una peste alta cu toate ca are ADC nu poate sa fie un voltmetru de exemplu, poate doar sa verifice daca are sau nu tensiune la pin.Acesta e codul:

$regfile = "ATtiny13.DAT"$crystal = 1000000Config Portb.1 = OutputPortb.1 = 1Dim V As BitConfig Adc = Single , Prescaler = AutoStart AdcDoIf Getadc(0) = 1 Then Portb.1 = 1If Getadc(0) = 0 Then Portb.1 = 0LoopEnd
Iar asta e simularea in Proteus:[attachment=0]13.jpg[/attachment]
problema este din cauza mai mult ca sigur a optrimizari si declarari variabilelor folosite. Acum nu stiu daca tu poti sa selectezi pe cati biti sa iti aloci o variabila folosita in ram sau constantele in memoria flash, in bascom asta. de aia daca vrei sa faci cod cat mai mic si nu ai chef de asm. pune mana pe C... nu degeaba se alege de catre profesionisti si cei care fac cod pentru aplicati complexe acest limbaj de programare !!! Eu am facut vre-o cateva proiecte cu ADC pe un tinny13 singura chestie de care m-am lovit este ca nu prea poti de exemplu sa faci calcule de conversie ADC tensiune in virgula mobila pentru ca nu ai destul spatiu si a trebuit sa stabilesc niste praguri direct :(. Acum depinde ce aplicatii vrei sa faci cu el dar acest controler este unul foarte limitat din pdv al dimensiuni codului 1k flash si 512biti ram, gandestete ca un int are 32 de biti deci daca declari 16 var int deja ai ocupat tot ramul.
Link spre comentariu

... pune mana pe C... nu degeaba se alege de catre profesionisti si cei care fac cod pentru aplicati complexe acest limbaj de programare !!!

@nana tu ai ceva probleme cand postezi la sectiunea asta. Cred ca nu ai citit titlul acestui post. Ti-l reamiuntesc: PROBLEME DE INCEPATORI

Tu crezi ca toata lumea e asa desteapta ca tine sa faca programe complexe si in limbaje evoluate pentru profesionisti? Daca nu poti sa dai o solutie reala la problema omului ar trebui sa te abtii de la raspunsuri de genul: pune mana si citeste datasheet-ul, sau pune mana pe C, sau alte chestii de genul asta.Cel putin aici pe acest topic. Poate ca ai gresit sectiunea, si ar trebui sa postezi raspunsul la PROBLEME DE PROFESIONISTI. Fara suparare dar chestiile astea ar trebui cumva reglementate de catre moderator!

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări