pravokutni signal pomocu atmega16

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
em20
Posts: 6
Joined: 01-02-2015, 19:36

pravokutni signal pomocu atmega16

Post by em20 »

pozdrav svima

radim na faxu jedan projekt s h mstom i za njegovo pokretanje treba mi pravokutni i invertni pravokutni signal. posto na faxu imamo atmega16 profesor ih zeli iskoristiti.
bio bih jako zahvalan na nekom programu za mikrokontroler posto vec satima ne nalazim nista korisno na internetu.

unaprijed hvala
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: pravokutni signal pomocu atmega16

Post by bob4 »

A koji programski jezik bi upotrijebio? :lol: Koliko naponski velik signal ? Koliko vremenski dugačak ? Kako ga prikazati na izlazu ? Da li se trba mijenjati frekvencija; vrijeme uključenja, vrijeme isključenja ? itd..... :wink:
em20
Posts: 6
Joined: 01-02-2015, 19:36

Re: pravokutni signal pomocu atmega16

Post by em20 »

koristimo avr studio. treba mi 10V na izlazu. sto se signala tice treba mi pravokutni na jednom izlazu a na drugom njegov invert. bitno mi je da se prklapapaju periode. frekvencija je 100kHz
pozdrav
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: pravokutni signal pomocu atmega16

Post by bob4 »

Da li si napisao ikoji program ? ( da vidimo) Recimo upali i ugasi LED....
em20
Posts: 6
Joined: 01-02-2015, 19:36

Re: pravokutni signal pomocu atmega16

Post by em20 »

ne, nisam nikad programirao za mikrokontrolore.
zato i trazim pomoc.
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: pravokutni signal pomocu atmega16

Post by bob4 »

Evo za početak: (sve je lijepo, ukratko objasnio) https://www.youtube.com/watch?v=plJf0r7IcWc

Samo slijediš tekst, poslažeš elemente i ukucaš tekst...... :roll:
em20
Posts: 6
Joined: 01-02-2015, 19:36

Re: pravokutni signal pomocu atmega16

Post by em20 »

ma super
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: pravokutni signal pomocu atmega16

Post by InTheStillOfTheNight »

Nisam gledao bob rjesenje, na mobu sam, ali meni se cini najlakse timer1 postaviti u top sa ICR registrom, fast pwm i koristiti hw ocr1a i ocr1b linije jer ih mozes lako natjerati u invert. Jedino za 10v trebas operacijsko pojacalo Ili jos bolje, ako je struja mala stavi npn tranzistor i kolektor povuci preko otpora na 10v.
InTheStillOfTheNight
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: pravokutni signal pomocu atmega16

Post by bob4 »

Code: Select all

ma super
Nije mi jasan naglasak :shock:


Evo i konverzacije jednog našeg prijatelja i mene:

- sve je to mogao napravit s jednim 555 ili invertorima npr CD4069
- ali kad profesor hoče sa atmega16
- da, naglasak je jako bitan
- to je ko da s mercedesu skineš kotač i preko felge vrtiš pilu
- a mali sigurno neće učit programirat, zato jer profesor hoće iskoristit mečku za rezat pločice
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: pravokutni signal pomocu atmega16

Post by InTheStillOfTheNight »

Jbg bob.. danas klinci uce blinkati led-om na ARM racunalu koje leti na dobrih 200 MHz. 555 je previse kompliciran :)

I to, das mu mcu na 200 mhz, a on iz rukava izvuce "Delay("100 godina");

Ali sreca, vecina alata za arm nema implementirane delay funkcije :)
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: pravokutni signal pomocu atmega16

Post by InTheStillOfTheNight »

Ali evo, da ne budemo okrutni, upute kako programirati:

1. Vidi koja je faza, i onda pred curom stavi ekser u nulu.

2. Pokreni mcu na vanjskom kristal oscilatoru 16 Mhz -> HINT: AVR fuse, datasheet

3. konfiguriraj timer 1 u fast pwm nacinu rada tako da top vrijednost bude ICP1 -> HINT: WGM bitovi TCCR1A ili TCCR1B ili TCCR1C registar ako postoji, datasheet

4. Podesi COM1A i COM1B bitove koji se nalaze u opet ova gore 3 registra tako da jedan na overflow ide u log1 a drugi u log0, to ti je invert pwm-a, datasheet

5. Izracunaj overflow za upis u ICR registar. HINT: Ako ne znas, pitaj susjeda ili tu na forumu, pisem na mob pa mi je to puno formula.

6. Pokreni Timer na max freq --> HINT, podigni samo CS10 bit, uvijek je krajnji desni u nekom od TCCR1x registara.

7. Postavi OC1A i OC1B portove kao izlaz. HINT DDR registri za te portove specijalne namjene, datasheet... to su ti pinovi koji uz naziv porta imaju OC1A i OC1B napisano negdje u zagradama

8. Postavi OCR1A i OCR1B registre na 50% vrijednosti ICP1 registra. 50% pwm

9. Vise nemoj nista raditi jer ces nesto sjebati i onda se moras vratiti na korak 1
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: pravokutni signal pomocu atmega16

Post by InTheStillOfTheNight »

Kolega evo program na zamolbu.

Code: Select all

#include <avr\io.h>

int main(void){
	
	TCCR1A |= (1<<WGM11);                    /* Config PWM mode, TOP = ICR1        */
	TCCR1B |= (1<<WGM12) | (1<<WGM13);
	TCCR1A |= (1<<COM1A1);	                /* Clear OC1A on CM (non-inverting)   */
	TCCR1A |= (1<<COM1B0) | (1<<COM1B1);	  /* Set OC1A on CM (inverting)         */
	ICR1 = 159;                              /* overflow = (159+1)*62,5ns->100 khz */
	OCR1A = 80;		                        /* set OC1A Duty (50%)                */
	OCR1B = 80;		                        /* set OC1B Duty (50%)                */
	TCCR1B |= (1<<CS10);                     /* run timer from prescaler 1->16 Mhz */
	DDRD |= (1<<PD4) | (1<<PD5);	          /* config PD4 and PD5 as outputs      */

	while(1);	                             /* do nothing                         */
}
Napisan je za ATMEGA16 i za takt 16 Mhz. Da bi ti sve funkcioniralo osim programiranja HEX datoteke moraš pokrenuti AVR na vanjskom kristal oscilatoru 16 Mhz. Ovo podešavanje se nalazi u FUSE postavkama. Ako baš želiš koristiti interni oscilator možeš, ali moraš promijeniti vrijednosti upisane u ICR1, OCR1A i OCR1B registre. Ako ne znaš kako, pitaj na forumu.

Ne znam koje kućište MCU-a imaš PDIP ili TQFP? Ako imaš PDIP onda su ti izlazi MCU-a pinovi 18 i 19. Možeš ih prepoznati jer u nazivima imaju OC1A i OC1B alternativne funkcije. Ako koristiš TQFP onda su pinovi 13 i 14 tvoji izlazi.

Napomena: Program ne radi u AVR Studio 4 simulatoru pošto se simulator ponaša kao da je TIMER podešen u dual-slope načinu rada. Davno sam gubio živce pokušavajući shvatiti što krivo programiram i često zaključivao da nije u meni problem, nego u AVR Studio 4 simulatoru pa će i ovo vjerojatno raditi dobro.

LP
Attachments
Pwm.rar
(8.61 KiB) Downloaded 363 times
InTheStillOfTheNight
em20
Posts: 6
Joined: 01-02-2015, 19:36

Re: pravokutni signal pomocu atmega16

Post by em20 »

puno hvala na programu
:D
User avatar
InTheStillOfTheNight
Odlično uznapredovao
Odlično uznapredovao
Posts: 938
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: pravokutni signal pomocu atmega16

Post by InTheStillOfTheNight »

Nista, tu smo da pomognemo... poz
InTheStillOfTheNight
Post Reply