Jump to content


Photo

Cum programez Atmel cu MPLAB si PICKIT ?


  • Please log in to reply
54 replies to this topic

#46 Guest_dimmache_

Guest_dimmache_
  • Vizitatori

Posted 29 October 2016 - 09:41 PM

1.Am descarcat MikroC for AVR

 

2.Am selectat Attiny45 4Mhz si am scris--


void main() {
  DDRB = 0xFF;           // Set direction to be output
  
  do {

    PORTB = 0x00;        // Turn OFF diodes on PORTB
    Delay_ms(1000);      // 1 second delay
    
    PORTB = 0xFF;        // Turn ON diodes on PORTB

    Delay_ms(1000);      // 1 second delay
  } while(1);            // Endless loop
}

De fapt am modifict programul LedBlinking

 

3.

D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude: Device signature = 0x1e9206

avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)

avrdude done.  Thank you.

HEXUL este in alt Foder. Cum ii indic asta ?

 

 

Intentionez sa dau un PWM cu 25KHz cu cel  putin 100 de valori pentru factorul de umplere. Ce sa aleg? PIC12F sau Attiny45 ?

PIC-ul este destul de puternic la pini are 20mA sourced si sink.


Conf acestui link pot sa dau 31Khz PWM cu Attiny85 care este cam acelasi lucru la PWM cu Attiny45--

http://www.re-innova...pwm-on-attiny85

 analogWrite(redled, 127);    // Set it to 50%  running at 31.2kHz 

Deci sa inteleg ca am 256 valori pentru duty cycle la 31KHz


Dar se pare ca si PIC-ul are PWM comparabil---

http://www.micro-exa...calculator.html

 

Deci PIC12F683 ar fi comparabil la PWM cu Attiny ?


PIC12f683 - o singura iesire PWM

Attiny45 - doua iesire PWM independente

 

PIC12f683 - 2K program

Attiny45 - 4k program

 

PIC12F683 - 20mA/pin

Attiny45 - 40mA/pin



D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45 -e -U flash:w:c:\programavr\progra
m.hex
avrdude: invalid file format '\programavr\program.hex' in update specifier
avrdude: error parsing update operation 'flash:w:c:\programavr\program.hex'

D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45 -e -U boot:w:c:\programavr\program
.hex
avrdude: invalid file format '\programavr\program.hex' in update specifier
avrdude: error parsing update operation 'boot:w:c:\programavr\program.hex'

D:\WinAvr\avrdude61>




D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45 -e -U boot:w:"c:\programavr\progra
m.hex"
avrdude: invalid file format '\programavr\program.hex' in update specifier
avrdude: error parsing update operation 'boot:w:c:\programavr\program.hex'

D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45 -e -U flash:w:"c:\programavr\progr
am.hex"
avrdude: invalid file format '\programavr\program.hex' in update specifier
avrdude: error parsing update operation 'flash:w:c:\programavr\program.hex'

D:\WinAvr\avrdude61>

HEX obtinut cu Mikro C AVR



Cu_reclama

Cu_reclama
  • Membri

#47 OFFLINE   Liviu M

Liviu M

    -

  • Membri
  • PipPipPipPipPip
  • 3,071 posts
  • Locatie:In sat cu Doru

Posted 29 October 2016 - 10:04 PM

Pfui, ce varza.

Incearca si tu sa-ti scrii mesajele pe probleme, ca in postul de mai sus ai vreo 3 probleme diferite amestecate unele peste altele.



#48 Guest_dimmache_

Guest_dimmache_
  • Vizitatori

Posted 30 October 2016 - 09:10 AM


D:\WinAvr\avrdude61>avrdude -c pickit2 -p t45 -e -U flash:w:"c:\programavr\progr
am.hex":i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9206
avrdude: erasing chip
avrdude: reading input file "c:\programavr\program.hex"
avrdude: writing flash (94 bytes):

Writing | ################################################## | 100% 0.13s

avrdude: 94 bytes of flash written
avrdude: verifying flash memory against c:\programavr\program.hex:
avrdude: load data flash data from input file c:\programavr\program.hex:
avrdude: input file c:\programavr\program.hex contains 94 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.12s

avrdude: verifying ...
avrdude: 94 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)

avrdude done.  Thank you.


D:\WinAvr\avrdude61>



-U <memtype>:r|w|v:<filename>[:format]: OK this one is the important command. Its the one that actually does the programming. The <memtype> is either flash or eeprom (or hfuse, lfuse or efuse for the chip configuration fuses, but we aren't going to mess with those). the r|w|v means you can use r (read) w (write) or v (verify) as the command. The <filename> is, well, the file that you want to write to or read from. and [:format] means theres an optional format flag. We will always be using "Intel Hex" format, so use i



#49 OFFLINE   nico_2010

nico_2010

    Membru avansat

  • Moderatori
  • 1,729 posts
  • Locatie:Bucuresti

Posted 01 November 2016 - 10:42 AM

Dupa 25 de postari care este concluzia?

Ramaneti la programatoarele corespunzatoare fiecarui tip de microcontroller.

Struto-camilele nu fac altceva decat sa induca confuzii si angoase celor care le folosesc (fie nu au intraga gama de produse, fie determina aparitia unor erori, explicabile sau nu, fie conduc la blocarea - remediabila - a microcontroller-ului s.a.m.d.).

 

Pentru userul dimmache: inainte de a adresa toate intrebarile din postul #46, ar fi trebuit sa te familiarizezi cu modul de lucru al avrdude (pct. 3), sa nu incurci Arduino cu MikroC, sau alt limbaj de programare (vezi :"  analogWrite(redled, 127);    // Set it to 50%  running at 31.2kHz") si sa citesti foile de catalog ale microcontroller-elor mentionate in aceeasi postare.



#50 OFFLINE   one

one

    Membru evoluat

  • Membri
  • PipPipPipPipPip
  • 2,984 posts
  • Locatie:Trento, Italia

Posted 02 November 2016 - 12:31 PM

 

N-as zice. Atmel este CISC si Microchip este RISC. Care programatori in asm sunt mai buni ? Pai pe RISC.

 

Sau daca vreau sa fac un SMPS aleg un PIC

 

La PIC30F SMPS am gasit setare Dead-time, canale care merg Push-Pull, Falf, Full Bridge, pe cand la Atmel nu am gasit asa ceva implemetat Hard.

 

Sigur ca poti sa le implemetezi soft, dar rezultatul nu este acelasi.

 

 

AVR CISC ?

 

Probabil dincolo de un anumit numar de instructiuni nu le mai invata nimeni si programeaza in C. PIC 8 biti pleaca de la 35 instructiuni si probabil fiind atat de putine e usor sa programezi in asm dar oricum nu ajungi departe caci peste o anumita dimensiune a programului e usor sa faci erori si greu sa le gasesti. 

Daca unul se considera programator bun daca a invatat 35 instructiuni sa fie sanatos.

 

AT90PWM - dead time, etc. Full-bridge necesita tot 2 iesiri de la microcontroller, ca si half-bridge. Un half-bridge merge push-pull de fapt sunt toate variatii pe aceeasi tema.

Iesirea inversata si dead-time se pot face simplu cu o poarta logica si un circuit de intarziere RC, poti face asta si cu cel mai slab microcontroller, problema este ca ai nevoie de un ADC rapid si deci te orientezi spre alte microcontrollere, care merg la frecvente mari.

 

Ai pus imaginea unui kit demonstrativ de la Microchip dar ai incercat sa faci un SMPS cu PIC ?

 

Daca e sa analizam asa cu uite asta are asta si celalalt n-are atunci nici PIC nici AVR nu au un ADC pe 24biti de exemplu cum are de exemplu Aduc847 de la Analog Devices dar daca unul lucreaza intr-un domeniu precum SMPS sau semnale analogice, se specializeaza pe acele micro care sunt compatibile cu munca lui. Dupa ce platesti 2000€ pentru un compilator profesional (IAR de exemplu) 500€ pe o un emulator, atunci nu mai schimbi usor micro. 

 

Cei care fac placi electronice pentru microcentralele de apartament au nevoie de microcontrollere ieftine si cu cateva intrari analogice, de aceea PIC ar fi potrivite. (sau AVR)

Cei care fac masini de cafea si au de citit cateva taste si comandat un display, valve si pompe, pot utiliza un AVR (sau PIC).

Dar daca unul face drivere pentru motoare se va orienta usor spre microcontrollere precum ST32 unde sunt zeci de optiuni si va uita de PIC, dsPIC sau AVR care sunt prea lente pentru operatiile acestea.


Edited by one, 02 November 2016 - 12:35 PM.


#51 Guest_dimmache_

Guest_dimmache_
  • Vizitatori

Posted 20 November 2016 - 03:31 PM

Dupa 25 de postari care este concluzia?

Merge brici programarea Atmel cu Pickit2.

Am dat si detaliile - daca cineva sa repete experimetrul.

 

Sunt bucuros ca am un singur programator atat pentru Atmel cat si pentru PIC.


Ai pus imaginea unui kit demonstrativ de la Microchip dar ai incercat sa faci un SMPS cu PIC ?

 

Am realizat diverse montaje cu PIC30F3010 si IR2110 IRFZ44/48 (ridicator 12v) + tor Kaschke.

Programe scrise in C cu pasaje in ASM.

 

In decursul testelor montajului am simtit nevoia unui Attiny. Inca nu l-am testat cu acesta.


"Daca voi considerati ca le-am incurcat. Citesc uimit cum mi se spune ca nu stiu ceva ce am stiut foarte bine cand am scris.

Pentru userul dimmache: inainte de a adresa toate intrebarile din postul #46, ar fi trebuit sa te familiarizezi cu modul de lucru al avrdude (pct. 3), sa nu incurci Arduino cu MikroC, sau alt limbaj de programare (vezi :"  analogWrite(redled, 127);    // Set it to 50%  running at 31.2kHz") "

 

Am lucrat in Arduino 1.6.12 IDE de multe, multe ori.

 

post #46 Cand am scris MikroC for AVR am dat ca exeplu in cod box codul corespunzator.


"Ce este gresit aici. Nu am spus ca e MickroC. Este unul din putinele programe pe care le-am gasit.


Conf acestui link pot sa dau 31Khz PWM cu Attiny85 care este cam acelasi lucru la PWM cu Attiny45--

http://www.re-innova...pwm-on-attiny85

 analogWrite(redled, 127);    // Set it to 50%  running at 31.2kHz" 

Deci sa inteleg ca am 256 valori pentru duty cycle la 31KHz


E gresita concluzia ? "Conf acestiu link" Nu am spus vreu in MikroC sa scriu instructiunea asta.


PS: Pe de alta parte aveti dreptate. In loc sa adresez atatea intrebari putem sa ma documetez mai mult. Asta, da este corect.


PS2: concluzia intregului topic este la prima linie din code-box de la post #48

 

Am incercat sa pun mai multe intrebari in acelasi topic pentru nu deschide mai multe topicuri diferite. Intentia a fost buna. Daca am interpretat gresit regulamentul.....



#52 OFFLINE   one

one

    Membru evoluat

  • Membri
  • PipPipPipPipPip
  • 2,984 posts
  • Locatie:Trento, Italia

Posted 21 November 2016 - 11:06 AM

In MikroC eu am avut probleme la mai multe periferice, printre care si timeri, la AVR.

Aproape intotdeauna eu setez registrii manual si nu utilizez functiile din libraria PWM de la MikroC. Astfel am control deplin asupra frecventei si a formei de unda.

Nu cred ca are relevanta daca utilizezi PIC sau AVR, si oricum nu as solicita mai mult decat cativa mA pe pin...



#53 OFFLINE   Liviu M

Liviu M

    -

  • Membri
  • PipPipPipPipPip
  • 3,071 posts
  • Locatie:In sat cu Doru

Posted 21 November 2016 - 02:30 PM

analogWrite() e comanda arduino pentru setat PWM si are unele limitari. 

Toate aceste lucruri se gasesc, asa cum e normal, in documentatie.



#54 OFFLINE   one

one

    Membru evoluat

  • Membri
  • PipPipPipPipPip
  • 2,984 posts
  • Locatie:Trento, Italia

Posted 21 November 2016 - 04:13 PM

Totusi daca colegul are nevoie de PWM la 31kHz ori va trebui sa modifice libraria PWM a Arduino, ori va trebui sa programeze cu altceva.



Cu_reclama

Cu_reclama
  • Membri

#55 OFFLINE   nico_2010

nico_2010

    Membru avansat

  • Moderatori
  • 1,729 posts
  • Locatie:Bucuresti

Posted 21 November 2016 - 04:27 PM

"Colegul", aka dimmache si-a manifestat curiozitatea cu privire la utilizarea unui singur programator (in speta PICKit2) pentru programarea microcontrollere-lor ATMEL. OK, a reusit.

Restul alegatiilor nu au legatura cu subiectul si pot face - eventual - obiectul unor postari aici: http://www.elforum.r...-de-incepatori/, in caz contrar le voi sterge fara avertisment.

 

L.E.: sper ca dimmache sa nu fie acelasi cu hspinache (desi stilul de abordare seamana izbitor)






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users