Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


Postări Recomandate

Vizitator rapo

E vorba despre EVB4.3, cam asta e manualul. Treaba e ca sunt doar begginer in domeniu si nu stiu detalii foarte multe,daca nu am manual sau ceva sa ma prind mai greu. Deci placa asta o poti programa in 2 feluri,teoretic:

1. Am cumparat un programator AVBPRG-T(stk500) cu care cica il pot programa, l-am instalat,am avut driverele date de ei, imi vede in device manager AVR Dopler dar nu pot sa programez nimic cu el, imi zice ca nu-l vede, am incercat pe 2 pc-uri, aceleasi instalari si nu merge pe nici unu

2. Cu avrdude pot programa placa fara un programator aditional,cu asta merge programarea dar nu merge placa,daca dau un program de test pt LCD, sa-mi arate temperatura de la senzorul de temp de pe placa, nu-mi apare nimic,orice program de test dau nu merge. Programele de test le am de pe site-ul lor de aici. Am citit pe ceva blog al unui care a folosit placa asta si scria ca sa folosesc pt fuses Fuses: High=0×89, Low=0xFF, default fiind alte valori.

Link spre comentariu

E vorba despre EVB4.3, cam asta e manualul. Treaba e ca sunt doar begginer in domeniu si nu stiu detalii foarte multe,daca nu am manual sau ceva sa ma prind mai greu. Deci placa asta o poti programa in 2 feluri,teoretic:1. Am cumparat un programator AVBPRG-T(stk500) cu care cica il pot programa, l-am instalat,am avut driverele date de ei, imi vede in device manager AVR Dopler dar nu pot sa programez nimic cu el, imi zice ca nu-l vede, am incercat pe 2 pc-uri, aceleasi instalari si nu merge pe nici unu2. Cu avrdude pot programa placa fara un programator aditional,cu asta merge programarea dar nu merge placa,daca dau un program de test pt LCD, sa-mi arate temperatura de la senzorul de temp de pe placa, nu-mi apare nimic,orice program de test dau nu merge. Programele de test le am de pe site-ul lor de aici. Am citit pe ceva blog al unui care a folosit placa asta si scria ca sa folosesc pt fuses Fuses: High=0×89, Low=0xFF, default fiind alte valori.

1. poţi da un link de unde ai cumpărat programatorul ăla??? nu de alta, dar am impresia că ori ai luat o clonă de stk500 pe usb, ori un programator isp care nu prea are nimic comun cu stk500.mai ales că zici că are drivere de "AVR Dopler", de fapt e AVR Doper, şi e un programator avr isp pe usb... vezi pe-aici că sunt câteva topice în care se discută despre el.uf, m-am uitat mai în urmă... da, ai un avr doper.driverele îţi instalează un port com virtual, care port o să aibă cifra mai mare de clasicul 4, gen COM10.com0com este necesar ca să "legi" COM10, unde este "văzut" doperul tău cu COM2, de pildă, care e unul din cele 2 porturi COM pe care le "vede" AVR Studio.asta înseamnă că trebuie să instalezi pe lângă driverele doperului şi softul ăla, com0com.notezi ce port COM e asignat doperului, verifici dacă ai liberi COM1 sau COM2, care sunt "văzuţi" de AVR Studio, şi cu com0com conectezi cele 2 comuri.faci asta cu doperul conectat la pc, altfel nu-ţi apare COMxx ăla virtual!!!după asta porneşti studioul, şi la programator pui stk500 şi comul la care l-ai legat cu com0com.ţi-aş face nişte screenshoturi, dar n-am avrdoper, io am siprog deocamdată, iar doperul e un fel de "proiect de viitor"...în avrdude îţi merge ok pentru că deja avrdude "ştie" de doper, AVR Studio nu "ştie" decât de plăcile de la atmel, şi atât...placa de dezvoltare iar ţi-o vede avrdude pentru că include, şi deja instalase driverele de ft232 în sistem, şi "vorbea" cu mcu prin Rx/Tx!!!vezi în pdf-ul pe care ni l-ai dat, că se spune acelaşi lucru cu ce-am zis eu mai sus, minus partea referitoare la avrdude şi placa de evaluare, doar că în engleză: http://www.and-tech.pl/Stk500/AVRProgUSB-v1.3-ang.pdfpe lângă asta, asigură-te că ai pus jumperii astfel încât doperul să "ceară" să fie văzut ca un COM virtual. deci nu HID, da??? altfel merge doar cu avrdude!!!2. după ce scrii cu succes, adică să nu-ţi dea erori la scriere sau verificare, deconectează cablul cu 10 fire, dacă pe ăla l-ai folosit la programare, lasă usb conectat la placă... sau mai bine scoate-l şi conectează la headerul ăla albastru lângă care scrie "power" o sursă de tensiune stabilizată oarecare, de minimum 7-8 volţi (merge şi o baterie de 9 volţi, cred, şi nu greşi polaritatea la conectare, că iar n-o să meargă!!! de stricat nu se strică, ai o "diodă antiprost" imediat după mufe), apoi vezi că e pe lângă mcu un buton de "reset". apasă-l, apoi vezi ce se întâmplă.cel mai bine e să-ţi faci un mic alimentator, filtrat şi nestabilizat de circa 12-13 volţi, pe care să-l foloseşti cu placa de dezvoltare...programatorul, avr doper, nu are nevoie de alimentare externă.va trebui să scoţi jumperul de alimentare a plăcii din usb dacă pui alimentare externă, vezi pagina 7 a manualului plăcii de dezvoltare.cu jumperul ăla scos, poţi lăsa conexiunea usb cu calculatorul cât timp ai placa de dezvoltare alimentată extern, dar dacă uiţi jumperul pus, cam rişti să prăjeşti ceva: usb-ul calculatorului, ft-ul de pe placă, sau ambele!!! şi dacă ai "noroc", şi mcu-ul!!! :rade: va trebui să te hotărăşti cum programezi placa:- ori din usb, direct din pc- ori prin intermediul doperului şi al headerului de 10 pini de pe placa de dezvoltare (ăla prezentat pe pagina 6 a plăcii).
Link spre comentariu
Vizitator rapo

Scuzati de intarziere dar am fost plecat o saptamana de acasa, ideea e ca am reusit sa-l programez cu programatorul extern cu Avr Studio 4. Am intampinat o alta problema si anume, placa are un lcd pe 2 randuri si pe site-ul producatorului placii sunt cateva programe de test pentru componentele de pe placa si este si pt lcd, ei, daca vreau sa incarc un program pt testarea lcd-ului nu-mi functioneaza deloc, adica primul rand de pe ecran are toti pixelii negrii si nu face nimic. Placa vine cu un programel initial incarcat, am facut rost de hex-ul acelui programel, il incarc si imi merge ecranul....programul respectiv numara ceva(nu secunde oricum)

Link spre comentariu

Bun, deja am ajuns la un alt nivel dupa cateva ore de chin. Am incercat sa citesc niste valori cu functia getrc. Merge doar pe ADC sau si pe portd? Este vorba de un atmega 8. in exemplul din help este conectat pe un portd. Eu am incercat si nu merge :sparge:Acum vreau sa afisez frecventa unor impulsuri pe LCD (am nevoie in viitorul proiect). Am citit ceva despre interrupts. Aveti ceva documentatie despre cum se folosesc aceste interrupts cu bascom?Multumesc.

Link spre comentariu
Vizitator rapo

Din nou revin cu o problema legata de placa de dezvoltare EVB4.3, are placa librarii pentru toate componentele, dar lcd-ul nu imi functioneaza cu librariile respective, am observat ceva in fisa de descriere a placii, LCD are legat pinul R/W la masa..deci nu e controlat prin port, am gasit o alta librarie pt controlerul HD44780 care e pe placa, unde imi cere sa conectez linia R/W la unul dintre pinii portului. Cum procedez in cazul de fata? Orice as incerca sa fac cu LCD-ul nu merg nimic pe el, am doar cateva programe de test care fuctioneaza bine,dar sunt in hex.

Link spre comentariu

Din nou revin cu o problema legata de placa de dezvoltare EVB4.3, are placa librarii pentru toate componentele, dar lcd-ul nu imi functioneaza cu librariile respective, am observat ceva in fisa de descriere a placii, LCD are legat pinul R/W la masa..deci nu e controlat prin port, am gasit o alta librarie pt controlerul HD44780 care e pe placa, unde imi cere sa conectez linia R/W la unul dintre pinii portului. Cum procedez in cazul de fata? Orice as incerca sa fac cu LCD-ul nu merg nimic pe el, am doar cateva programe de test care fuctioneaza bine,dar sunt in hex.

Pai tu din LCD nu o sa citesti nici odata caractere deci tot timpu tu o sa scrii caractere deci trimiti date catre el. De acea se conecteaza R/W la masa adica LCD-ul o sa fie tot timplul in modul Write. Daca iti merge cu alte softuri(hexuri) lcd-UL inseamna ca totul e ok dpdv electronic deci probleme la soft.
Link spre comentariu
  • 4 săptămâni mai târziu...

Nu inteleg un lucru,de ce variabila w din portiunea de cod cu bold nu se modifica in exteriorul functiei isr().Cand o folosesc in main are mereu valoarea 0.Care sa fie problema?

 

 

#include <avr/io.h>#include <inttypes.h>#include <stdlib.h>#include <stdio.h>#include <util/delay.h>#include <avr/interrupt.h>///////////////////////////////////////unsigned char SMSFlag=0,SMSReadFlag=0,ButtonPressed=0; unsigned int timer0_counter=0; unsigned int i=0,j=0,k=0; unsigned char testMessage[]="Hello! this is Test Message!!!"; unsigned char ctrlZ=0x1A; //unsigned char cmd_cpms[]="AT+CPMS="ME"\r";  //selectez locatia de memorie preferata/////////////////////////////////////unsigned char cmd_cmgd[]="AT+CMGD=1\r";      //Delete message from index 1 of prefered memory location/////////////////////////////////////unsigned char cmd_cmgr[]="AT+CMGR=1\r";      //Citire mesaj/////////////////////////////////////unsigned char cmd_cmgf[]="AT+CMGF=1\r";     //Text mode /////////////////////////////////////unsigned char cmd_cmgl[]="AT+CMGL=0\r";  // selectare locatie mesaj/////////////////////////////////////unsigned char cReturn[]="\r";//////////////////////////////////// ////////////////////////////////////unsigned char cmd_AT[]="AT\r"; ///////////////////////////////////unsigned char cmd_cgmm[]="AT+CGMM\r";  //identificare model/////////////////////////////////////////////////////void USARTInit(uint16_t ubrr_value){   UBRRL = ubrr_value;   UBRRH = (ubrr_value>>8);   UCSRC=(1<<URSEL)|(3<<UCSZ0);   //UBRR=((f_clk/(BaudRate*16))-1)    UCSRB=(1<<RXEN)|(1<<TXEN);}char USARTReadChar(){   while(!(UCSRA & (1<<RXC)))   {      //Do nothing   }   return UDR;}void USARTWriteChar(char data){   //Wait untill the transmitter is ready   while(!(UCSRA & (1<<UDRE)))   {     }   UDR=data;}/////////////////////////////////////////////void TransmitUSARTC(const char* c){	int i =0;	while(c[i]!=0x0 && c[i]!=0xd)	{		 USARTWriteChar(c[i]);		i++;	}}///////////////////////////////////////void port_init(void) {      PORTA = 0x00;      DDRA  = 0x00;      PORTB = 0x00;      DDRB  = 0xff;      PORTC = 0x00;      DDRC  = 0xFF;      PORTD = 0x00;      DDRD  = 0x00; 	 }////////////////////////////////////////0000 0100uint8_t w=0;
ISR(INT0_vect)

{w++;

 

PORTB=0xff;

PORTC=w;

if(w>10)

{

PORTB=0x00;

 

}}

 

void main(){   char data;   USARTInit(103);  int n,z,l;char b [50];////////////////////////////////////////port_init();GICR|=(1<<INT0);	 MCUCR |= 1<<ISC10;///////////////////////////////////////sei();//PORTC=w;// Set Text Mode /*TransmitUSARTC("AT+CKPD=");USARTWriteChar('"');USARTWriteChar('"');USARTWriteChar(',');USARTWriteChar('5');USARTWriteChar(',');USARTWriteChar('1');USARTWriteChar('\r');_delay_ms(500); USARTWriteChar('\n');*/n=sprintf (b, "%d", z);TransmitUSARTC("\r \n");/*/////////////////////////////////////////TransmitUSARTC("AT");USARTWriteChar('\r');_delay_ms(500);/////////////////////////////////////TransmitUSARTC("AT+CMGF=1");USARTWriteChar('\r');_delay_ms(500); ///////////////////////////////////TransmitUSARTC("AT+CMGS=");USARTWriteChar('"');USARTWriteChar('"');USARTWriteChar('\r');_delay_ms(50);TransmitUSARTC("trimite");USARTWriteChar('26');*/   while(1)   {	if(!(PINA & 0b00000010)){	TransmitUSARTC("AT+CKPD=");	USARTWriteChar('"');	USARTWriteChar('"');	USARTWriteChar(',');	USARTWriteChar('5');	USARTWriteChar(',');	USARTWriteChar('1');	USARTWriteChar('\r');	_delay_ms(500); 	USARTWriteChar('\n');        for(int k=0;k<n;k++)		USARTWriteChar(b[k]);		USARTWriteChar('\n');}   }}
Link spre comentariu

Pe scurt: in main "w"-ul nu se modifica, ca urmare compilatorul face o optimizare si in loc de "w" pune ... valoare lui initiala, zero. Pentru a sti ca acea variabila e modificabila de catre o intrerupere externa (separata de firul principal al programului), e necesar ca variabila sa fie declarata "volatile"; in acest fel compilatorul nu o va mai "optimiza".

volatile uint8_t w;
Mai multe detalii (si alte chestii bine de stiut) aici http://www.nongnu.org/avr-libc/user-manual/FAQ.html
Link spre comentariu

L-am trimis direct in terminal de la tastatura si m-am uitat cu un program de monitorizare a portului serial la caracterul trimis.Pana acum am realizat partea de trimitere a sms-ului de la mcu(pt controlerul gsm) in cazul modificarii unor parametri.Urmeaza partea dificila acum,controlul dispozitivelor.

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