pravokutni signal pomocu atmega16
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
pravokutni signal pomocu atmega16
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
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
Re: pravokutni signal pomocu atmega16
A koji programski jezik bi upotrijebio? 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.....
Re: pravokutni signal pomocu atmega16
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
pozdrav
Re: pravokutni signal pomocu atmega16
Da li si napisao ikoji program ? ( da vidimo) Recimo upali i ugasi LED....
Re: pravokutni signal pomocu atmega16
ne, nisam nikad programirao za mikrokontrolore.
zato i trazim pomoc.
zato i trazim pomoc.
Re: pravokutni signal pomocu atmega16
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......
Samo slijediš tekst, poslažeš elemente i ukucaš tekst......
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: pravokutni signal pomocu atmega16
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
Re: pravokutni signal pomocu atmega16
Code: Select all
ma super
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
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: pravokutni signal pomocu atmega16
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
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
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: pravokutni signal pomocu atmega16
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
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
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb
Re: pravokutni signal pomocu atmega16
Kolega evo program na zamolbu.
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
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 */
}
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 402 times
InTheStillOfTheNight
Re: pravokutni signal pomocu atmega16
puno hvala na programu
- InTheStillOfTheNight
- Odlično uznapredovao
- Posts: 938
- Joined: 01-06-2006, 17:54
- Location: Zagreb