keenox Postat Octombrie 10, 2015 Partajează Postat Octombrie 10, 2015 Nokia vechi stiu sigur AT, dar nu prea sunt documentate toate comenzile. Eu am un 5110 si mi-am facut un adaptor ca aici: http://www.panuworld.net/nuukiaworld/hardware/cables/fbus.htm Link spre comentariu
Vizitator Postat Octombrie 10, 2015 Partajează Postat Octombrie 10, 2015 (editat) Am vrut sa inteleg de ce nu folosesti direct delay(). inseamna ca a fost o intamplare, eu gresisem o variabila pe-acolo. nu am folosit delay(), pentru ca atunci cand dai comanda delay(), uC ingheata si nu mai executa nimic. astfel ca...daca utilizatorul renunta la comanda, sirena ar fi continuat sa sune pana termina uC de numarat delay(). e un mecanism...de a face delay() in impulsuri sa zic asa. eu nu prea folosesc tipul asta de delay, folosec milllis(), dar aici nu avea rost. referitor la nokia. cred ca merge si cu un FTDI, daca nu poate sa-si faca un pcb.. Editat Octombrie 10, 2015 de Vizitator Link spre comentariu
Liviu M Postat Octombrie 10, 2015 Partajează Postat Octombrie 10, 2015 N-a fost intamplare. Si da, am inteles ce-ai vrut sa faci, de-aia te-am si tras de maneca. Link spre comentariu
svsu Postat Februarie 22, 2016 Autor Partajează Postat Februarie 22, 2016 (editat) Revin cu intarziere la acel topic. Am realizat montajul, am programat ATtiny-ul. Dar am cinci nelamuriri: 1. Folosesc butoane pushbutton cu revenire sau cu retinere? 2. Pinul ce citeste valoarea rezistorilor este pinul fizic 3? 3. Pinul de iesire releu este pinul fizic 2? 4. La instructiunea const int panouPin = A3; // Attiny85: pin 2const int outputPin = 4; // Attiny85: pin 3 nu trebuia const int panouPin = A3; // Attiny85: pin 2 const int outputPin = A4; // Attiny85: pin 3 ? 5. Cum calculez valorile rezistorilor? Cu ADC egal cu Vin*1024/Vref? Editat Februarie 22, 2016 de svsu Link spre comentariu
svsu Postat Iulie 20, 2016 Autor Partajează Postat Iulie 20, 2016 Am incarcat hex-ul aferent schitei cu Khazama AVR programmer, dar se pare ca nu functioneaza. Nu am output pe pinul 3. Circuitul fizic este cel din attach. Am folosit ca programator un USBASP si un bread board. Am testat, ca sa fiu sigur, si un alt hex de aplicatie blink led. Pe acela a functionat. Deci merge programatorul si recte Khazam-ul. How can i do? Link spre comentariu
svsu Postat Iulie 22, 2016 Autor Partajează Postat Iulie 22, 2016 Am rezolvat problema facand in hex byteswap. Acum functioneaza dar cand pinul 2 este in aer pe pinul trei am niste impulsuri parazite aleatoare. Sa pun un rezistor intre pinul 2 si masa asa cum a fost sugerat? Cam ce valoare, pentru ca pe reteaua serie de rezistori am acum GND, 30k, 10k, 10k, 10k, Vcc 5V. Link spre comentariu
Vizitator Postat Iulie 26, 2016 Partajează Postat Iulie 26, 2016 (editat) nu am inteles de ce ai facut modificare in Hex cand aveai codul sursa..care de altfel e corect, nu e nevoie sa pui A4 pentru ca atiiny85 nici nu are un A4 cred ca sunt cam mari valorile de 10K pentru ca insumate ar fi vreo 30K. undeva insumate ar trebuii sa fie vreo ~15K si pentru masa e ok ceva in jurul lui 30K. trebuie testat, si modificat in soft range-urile. mai pe scurt trebuie sa compilezi sursa, nu poti incarca doar HEX-ul. sau daca vrei sa incarci doar HEX-ul atunci pui un potentiometru in loc de cele 3 rezistente , si notezi valorile. masa ramana fixa, vreo ~30K. niciodata nu lasi un PIN fizic de intrare fara masa, pentru ca e firesc sa ai citiri aiurea. asta in cazul in care nu activezi din soft pull up Editat Iulie 26, 2016 de Vizitator Link spre comentariu
svsu Postat Iulie 28, 2016 Autor Partajează Postat Iulie 28, 2016 (editat) nu am inteles de ce ai facut modificare in Hex cand aveai codul sursa..care de altfel e corect, nu e nevoie sa pui A4 pentru ca atiiny85 nici nu are un A4 cred ca sunt cam mari valorile de 10K pentru ca insumate ar fi vreo 30K. undeva insumate ar trebuii sa fie vreo ~15K si pentru masa e ok ceva in jurul lui 30K. trebuie testat, si modificat in soft range-urile. mai pe scurt trebuie sa compilezi sursa, nu poti incarca doar HEX-ul. sau daca vrei sa incarci doar HEX-ul atunci pui un potentiometru in loc de cele 3 rezistente , si notezi valorile. masa ramana fixa, vreo ~30K. niciodata nu lasi un PIN fizic de intrare fara masa, pentru ca e firesc sa ai citiri aiurea. asta in cazul in care nu activezi din soft pull up Pana la urma am folosit un ADC calculator si mi-a rezultat urmatoarea lista de valori: ScreenShot084.jpg.bmp Editat Iulie 28, 2016 de svsu Link spre comentariu
Vizitator Postat Iulie 28, 2016 Partajează Postat Iulie 28, 2016 (editat) eu iti propun sa lasi calculatorul, ala e pentru valori orientative si o proportionare mai buna. incepe si pui un potentiometru, cu notare valori, apoi pui rezistente apropiate.. sau faci din soft (best way), compilezi si incarci. de ce ? pentru simplu fapt ca poate ai noroc sa te afli la doar 1-2 puncte in ADC, ceea ce inseamna Unsure. Ba e PreAlarma, sau poate Alarma ... Intelegi tu ce zic.. Cel putin sper sa intelegi. Editat Iulie 28, 2016 de Vizitator Link spre comentariu
svsu Postat August 4, 2016 Autor Partajează Postat August 4, 2016 Atunci am putea reveni la varianta cu pini adresabili Attiny85 pentru fiecare tip de semnal dorit? Link spre comentariu
Vizitator Postat August 4, 2016 Partajează Postat August 4, 2016 n-ai mai terminat proiectul asta, ma omule? :-) Link spre comentariu
Vizitator Postat August 5, 2016 Partajează Postat August 5, 2016 (editat) Attiny85 8Mhz (-U lfuse:w:0xE2:m -U hfuse:w:0xD7:m -U efuse:w:0xFE:m) Daca nu merge butonul de reset, pune R5 = 10K R1-R4, R6 ar trebuii calculate dupa LED-urile pe care le vei folosii. Pe C1 vroiam sa scriu 100nF, incearca sa-l pozitionezi cat mai aproape de uC, preventiv sa nu-l bruieze sirena, sau ce e, chiar daca e separata galvanic. Nu uita sa pui la Releul care-l vei monta dioda, si iti recomand sa folosesti un mos-fet in loc de tranzistor. Toate Butoanele sunt fara retinere de tip PUSH (apasare scurta ~500ms) uC functioneaza cel mai bine la Maxim 4.95-4.98V. Sa nu ai niciodata nimic peste 5V. In schema ta ai 3.3V dar nu prea e ok la 8MHz ; uC-ul s-ar bucura mai mult cu tensiunea de 4.98V COD: /*Attiny85 */#include <avr/io.h>#include <avr/wdt.h>const int outputPin = 0; // Attiny85: pin 5const int btn1Pin = 1; // Attiny85: pin 6 | ALARMA LA DEZASTREconst int btn2Pin = 2; // Attiny85: pin 7 | PREALARMA AERIANAconst int btn3Pin = 3; // Attiny85: pin 2 | ALARMA AERIANAconst int btn4Pin = 4; // Attiny85: pin 3 | INCETARE ALARMAint currentButton = 0;unsigned long cMs, lastBlink = 0;boolean stLed = 0;void setup(){ if(MCUSR & _BV(WDRF)){ MCUSR &= ~_BV(WDRF); WDTCR |= (_BV(WDCE) | _BV(WDE)); WDTCR = 0x00; } int i=0; for (i=0; i<5;i++) { pinMode(i,OUTPUT); } for (i=1; i<5;i++) { digitalWrite(i,HIGH); } delay(1000); for (i=0; i<5;i++) { digitalWrite(i,LOW); } delay(1000); wdt_enable (WDTO_1S);}void loop(){ wdt_reset (); //wathdog ! ReadButtons(); raid(currentButton); }void raid(int mod_functionare){ switch(mod_functionare){ case 1: //ALARMA LA DEZASTRE for (int i=0; i<5;i++){ digitalWrite(outputPin,HIGH); myDelay((16*1000)); digitalWrite(outputPin,LOW); myDelay((10*1000)); } currentButton = 0; break; case 2: //PREALARMA AERIANA for (int i=0; i<3;i++){ digitalWrite(outputPin,HIGH); myDelay((32*1000)); digitalWrite(outputPin,LOW); myDelay((12*1000)); } currentButton = 0; break; case 3: //ALARMA AERIANA for (int i=0; i<15;i++){ digitalWrite(outputPin,HIGH); myDelay((4*1000)); digitalWrite(outputPin,LOW); myDelay((4*1000)); } currentButton = 0; break; case 4: // INCETARE ALARMA digitalWrite(outputPin,HIGH); myDelay(120000L); digitalWrite(outputPin,LOW); currentButton = 0; break; } //end switch}int ReadButtons() { if (currentButton != 0) { return currentButton; } int r, sw = 0; int t = 125; for (int i=1; i<5;i++) { digitalWrite(i,LOW); sw = digitalRead(i); if (sw == HIGH) { sw = i; delay(1); goto fw; break; } }fw: switch(sw) { case 1: delay(t); r=digitalRead(sw); if (r == 1) currentButton = sw; break; case 2: delay(t); r=digitalRead(sw); if (r == 1) currentButton = sw; break; case 3: delay(t); r=digitalRead(sw); if (r == 1) currentButton = sw; break; case 4: delay(t); r=digitalRead(sw); if (r == 1) currentButton = sw; break; } //end.sw return currentButton;}void LedStatus(){ if (currentButton == 0) return; if ((cMs-lastBlink) > 250UL) { stLed = !stLed; if (stLed == LOW) { for (int i=1; i<5;i++) { digitalWrite(i,LOW); } } digitalWrite(currentButton,stLed); lastBlink = cMs; }}void myDelay(long milis){ for (long i=0; i<milis; i++){ wdt_reset (); delay(1); cMs = millis(); LedStatus(); }} alarma.hex alarma.hex.zip Editat August 5, 2016 de Vizitator Link spre comentariu
keenox Postat August 5, 2016 Partajează Postat August 5, 2016 (editat) @Aw Genetix: goto fw; si fw: pot sa dispara si chiar e recomandat. Instructiunea break face fix asta. Editat August 5, 2016 de keenox Link spre comentariu
Vizitator Postat August 5, 2016 Partajează Postat August 5, 2016 (editat) mulțumesc de completare.da,corect. in teorie. in practica insa nu am idee de ce, dar sarea de "break". am testat codul pe un attiny, face exact ce trebuie, recomand sa ramana exact cum e.ceva legat de instrucțiunea GOto, ai înțeles tu ceva, dar se refera mai mult la C in software pentru calculator de exemplu unde programatorul are nevoie sa faca un debug, fiind imposibil de urmarit fluxul. ori in cazul unui avr.. nu poti face debug. Editat August 5, 2016 de Vizitator Link spre comentariu
keenox Postat August 6, 2016 Partajează Postat August 6, 2016 (editat) @Aw Genetix: Daca iti sarea de break, ori ai gresit tu ceva, ori e compilatorul busit. Eu as miza pe prima varianta. Legat de goto, nu este vorba de debug, ci de usurinta urmaririi codului la citit, cat si posibilitatea de a aparea niste erori mai greu de detectat pt compilator, cum ar fi folosirea de variabile neinitializate. Debug (cred ca te referi la debug live) se poate face pe orice Atmel, chiar si Attiny, dar iti trebuie hardware. Intereseaza-te de JTAG si debugWire ;) Editat August 6, 2016 de keenox 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