Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


Postări Recomandate

... 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!

Ba daca tu esti prost facut gramada lasa in pui mei pe alti care stiu ceva programare sa explice la alti. Eu i=am dat o sugestie uite ca bascom-ul ala nu e in stare sa compileze un program care sa faca mai mult de un kkt pansat, si sa incapa intr-o memorie de 1K flash si ram 512. Dar in fine tu esti marele expert si da tu sfaturi daca esti mai destept ca mine si ai experienta de lucru mai multa. As fi vrut sa vad si eu mai multe proiecte facute de tine de la 0 nu copiate de pe net.
Link spre comentariu

Stiu ca acest attiny e "limitat" 1k flash , chiar si fizic e limitat, are doar 8 pini, insa pentru ce mi-ar trebui mie ar fi destul, asta daca i-l "dovedesc" soft. Nu a-si vrea de la el decit sa-mi citeasca o tensiune de 80V iar atunci cind aceasta tensiune scade la 10V sa-mi dea semnal pe un pin ales in prealabil timp de aproximativ 0.2 sec la interval de aproximativ 2 sec. Am un "proiect" in derulare la care trebuie sa-i implementez ce am scris mai sus si printre alte solutii il am in vedere si pe acest ATtiny13, l-am ales pentru ca e mic si nu-mi mai trebuie o "palarie" de piese daca reusesc cu el.Din nou nu sint acasa si iar scriu din amintiri, ce am observat, o variabila declarata nu permite a depasi o anumita valoare numarica, cel putin in cazul ADC-ului, deci daca am variabila "V" si o transpun in urmatoarea linie de comanda V = GETADC(0) i-mi da eroare, am reusit doar sa citeasca prezenta sau lipsa tensiune la un pin ADC in nici un caz nu am reusit sa-mi citeasca precis o tensiune.Daca mai sint idei sint binevenite doar in Bascom pentru ca pe acesta il stiu cit de cit........................................................................................................................................................................."Ba daca tu esti prost facut gramada...." doamne cit urasc limbajul de acest gen, cum dumnezeu reusiti voi sa deducti cine e prost si cine destept nu stiu........

Link spre comentariu

Nu poti sa pretinzi mai mult de la un maimutoi (sau o maimuta! ca asa pare dupa nume ) decat acest limbaj de mahala de la periferia Bucurestiului. Atâta stie, atâta poate! Se lauda ca explica la altii si nu da decat raspunsuri de genul: "pune mana si citeste datasheetul!". Un fariseu care habar nu are pe ce lume traieste, cand afirma ca BASCOM e de...nu ma înjosesc sa reproduc cuvintele, si habar nu are ca proiectele mele sunt facute în mare masura în Bascom si daca am copiat de undeva, ceva, am specificat asta în articol. Apropo NANA! Daca cunosti proiectele mele înseamna ca le-ai citit si ti-au captat atentia, si asta ma încânta! Poate mai vezi si tu ceva interesant pe acolo si te mai cultivi! Cu scuzele de rigoare pentru OFF-TOPIC pentru ceilalti forumisti care citesc aceste rânduri, si nu merita sa fie deranjati de astfel de specimene si de limbajul lor sub-urban, va doresc toate bune.

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 nu e de la ATtiny13.

Totul e sa-l folosesti eficient.

ATtiny13 nu e chiar asa de mic!

 

Programul nu se compileaza pentru ca ai lasat spatiul alocat pentru stiva implicita si alte setari generice care mananca tot ramul. Citeste in help-ul BASCOM-ului ce inseamna directivele $swstack, $hwstack si $framesize. Tine cont ca toate astea sunt in RAM iar ATtiny 13 are doar 64 de bytes, asa ca foloseste-i unde ai nevoie, nu-i rezerva pentru chestii de care nu ai nevoie (asa cum sunt setarile generice).

 

Foloseste codul asta si o sa mearga:

$regfile = "ATtiny13.DAT"$crystal = 1000000$swstack = 8$hwstack = 2$framesize = 0Config Portb.0 = OutputPortb.0 = 0'rem teoretic e corect dar portb.5 este pinul de reset'pe care il poti folosi si la altceva dar in conditii "speciale"Config Portb.5 = InputPortb.5 = 0Dim V As WordConfig Adc = Single , Prescaler = Auto , Reference = AvccStart AdcDo   V = Getadc(0)   V = V + 1   Wait 1LoopEnd
Link spre comentariu
  • 1 lună mai târziu...
Vizitator sergiupitzy

Buna baieti,Am si eu un Atmega8535 si numai nu reusesc sa fac un cod in Bascom-avr care sa aprinda si sa stinga un led prin comada unui push buton,Ma poate ajuta si pe mine cineva cu unu con dimplu pt asa ceva.ledu lam legat pe portd.7 si push buton pe portc.0ma puteti ajuta cu un cod care la prima apsare sa imi arpinda ledu si la urmatoare apasare sa mil stinga.multumesc.

Link spre comentariu

Problema nu e de la ATtiny13.

Totul e sa-l folosesti eficient.

ATtiny13 nu e chiar asa de mic!

Programul nu se compileaza pentru ca ai lasat spatiul alocat pentru stiva implicita si alte setari generice care mananca tot ramul. Citeste in help-ul BASCOM-ului ce inseamna directivele $swstack, $hwstack si $framesize. Tine cont ca toate astea sunt in RAM iar ATtiny 13 are doar 64 de bytes, asa ca foloseste-i unde ai nevoie, nu-i rezerva pentru chestii de care nu ai nevoie (asa cum sunt setarile generice).

 

Corect si la obiect .

( In general cand eu am probleme citesc helpul Bascomului si acolo explica destul de bine .

Nu are rost sa comparam limbajele de programare dar eu am reusit in bascom pe oricare microcontroler atmel sa fac orice soft pe care l-am vazut implementat si in alte limbaje (C sau ASM) , e adevarat ca uneori apar tot felul de probleme dar prin studiu am reusit sa trec peste .)

Sorry ca nu am citit mai devreme ca acelasi lucru l-as fi sugerat si eu : adica setarile default nu sunt bune .

Link spre comentariu

Problema nu e de la ATtiny13.

Totul e sa-l folosesti eficient.

ATtiny13 nu e chiar asa de mic!

Programul nu se compileaza pentru ca ai lasat spatiul alocat pentru stiva implicita si alte setari generice care mananca tot ramul. Citeste in help-ul BASCOM-ului ce inseamna directivele $swstack, $hwstack si $framesize. Tine cont ca toate astea sunt in RAM iar ATtiny 13 are doar 64 de bytes, asa ca foloseste-i unde ai nevoie, nu-i rezerva pentru chestii de care nu ai nevoie (asa cum sunt setarile generice).

Mda, m-am luat cu altele si uitase-m cu totul de ajutor, multumesc frumos, cu exemplul de soft dat am reusit.

Si intradevar acest attiny13 nu e chiar atit de mic, ulterior am gasit un proiect de Volt_Ampermetru si termometru toate cu acest Mc si LCD 2X16.

Link spre comentariu
  • 2 săptămâni mai târziu...

buna seara. fara sa mi dau seama am ars (la propriu sau am blocat ca nu mi dau seama) cateva uc -uri.Intrebarea mea este daca un uc este blocat mai poate fi citit de PONY PROG sau nu? dupa ce am facut o lata de cateva ori am ajuns la concluzia ca mi se intampla fenomenul acesta de ardere sau blocare (ca nu stiu nici acum ) dupa ce schimb frecventa uc-ului din bascom. apoi il scriu cu PONYPROG. fusebitii ii am setati mereu aceeasi in ponyprog si imi merge mereu sa scriu softul in uc. pana cand am remarcat ca daca schimb frecventa apare aceasta "minune". este o coincidenta sau nu? va rog cine stie sa ma destepte si pe mine

Link spre comentariu

ca sa arzi un mcu trebuie sa faci scurt circuit sau sa aplici tensiuni mai mari decat cele nominale (majoritatea 5V).exista 3 surse de clock pentru ateml-uri:oscilator internoscilator RC externcristal de quartz externprobabil tu cand schimbi frecventa alegi o sursa externa de clock pe care de fapt nu i-o furnizezi. nu le arunca pentru ca se pot recupera doar ca trebuie scule si/sau pricepere. nu ai mentionat de ce varianta de microcontroller e vorba.

Link spre comentariu

ca sa arzi un mcu trebuie sa faci scurt circuit sau sa aplici tensiuni mai mari decat cele nominale (majoritatea 5V).exista 3 surse de clock pentru ateml-uri:oscilator internoscilator RC externcristal de quartz externprobabil tu cand schimbi frecventa alegi o sursa externa de clock pe care de fapt nu i-o furnizezi. nu le arunca pentru ca se pot recupera doar ca trebuie scule si/sau pricepere. nu ai mentionat de ce varianta de microcontroller e vorba.

Multumesc frumos pentru raspuns, e vorba de atm8 si 8535l cel blocat recent. am un programator pe serial facut de aici http://yo6pir.wordpress.com/proiecte/avr-programator/ . mii de multumiri d-nului care la prezentat pe site. programul il fac in bascom si il scriu in pony. Ceea ce cred eu ca ar avea o importanta este ca din softul din bascom am marit frecventa si apoi l am scris in pony. poate fii doar o coincidenta, mai trebuiau alte operatii facute?
Link spre comentariu
Vizitator markbogdan

Salut,

M-am apucat de curand sa lucrez cu un uC Atmega8535 pentru a comanda doua servomotoare modificate pt cursa de 360grade. Am setat timerul 1 sa functioneze pe modul 14, fast pwm cu valuarea de TOP ca fiind valuarea registrului ICR1.

Folosind codul urmator, nu am reusit defel sa comand motorul sa se invarta contrar acelor de ceasornic.

#define F_CPU 1000000UL#include <avr/io.h>#include <util/delay.h>//Simple Wait Functionvoid Wait(){   uint8_t i;   for(i=0;i<50;i++)   {      _delay_loop_2(0);      _delay_loop_2(0);      _delay_loop_2(0);   }}void main(){   //Configure TIMER1   TCCR1A|=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);          TCCR1B|=(1<<WGM13)|(1<<WGM12)|(0<<CS11)|(1<<CS10);   ICR1=19999;     DDRD|=(1<<PD5);     while(1)   {      OCR1A=;         Wait();   }}
codul a fost scris in avrstudio cu librarie avrgcc

pentru o valuare OCR1A de 1500 servo-ul stationeaza. Pentru orice alta valuare se invarte intr-un singur sens (CW) cu viteze diferite.

Multumesc anticipat pt ajutor :P

Link spre comentariu

Uite aici un exemplu de initializare timer, codul e scris pt un atmega128, si sunt val ocr si ICR calculate pt frecv de 16Mhz:

void init_timer1(void){TCCR1A=0xA0;TCCR1B=0x12;TCNT1H=0x00;TCNT1L=0x00;ICR1=20000;OCR1A=1500;OCR1B=1500;}

modificand doar valoarea OCR-ului obtii durata frontului poziti al impulzului. e calculat pescalerul sa corespunda pentru un nr de count de 1 microsecunda.

Link spre comentariu

Salut doresc si eu sa transform din c. in hexa un mic program pentru un frecventmetru cu afiseaj si nu stiu cum sa fac am incercat cu icprog si dupa aceea l-am salvat in hexa desi nu cred ca s-a salvat corect .... Pun si pagina producatorului...

E vorba de un mic frecventmetru cu at90s2313 eu am pus unu attyny2313 e echivalentul , iar fusebitii i-am lasat asa cum erau fiindca era nou microcontrolerul.

L-am incarcat cu asa zisu soft salvat de mine in hexa l-am si citit pentru a vedea daca s-a scris l-am pus in montaj si nu mere :(

Aici e frecventmetru cu pricina http://www.myplace.nu/avr/countermeasures/index.htm tensiunea de alimentare am pus-o la 4.9v.

O parere ceva...

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