Witam!
Docelowo musze stworzyc program do transmisji szeregowej wykorzystujacy 2 USARTy. Stad moj wybor padl na Atmega162.
Poniewaz bedzie to transmisja z predkoscia 9600b/s na zaprojektowanej plytce znalazl sie kwarc 7,3728MHz.
Poniewaz dopiero zaczynam z uC pierwszym programem jaki wgralem aby sprawdzic czy wszystko dziala byl znaleziony na http://www.avrtutor.com/tutorial/thermo/led.php
Po skompilowaniu i wgraniu do atmegi pelnia szczescia, dioda swieci.
Nastepny krok : migajaca dioda ...
Probowalem dwa kody:
oraz
pierwszy z dioda.com.pl, drugi z avrtutor.com obydwa nie dzialaja.
Bity konfiguracyjne ustawilem nastepujaco:
programowane przy pomocy ISPProg.
Postepujac zgodnie z instrukcja http://www.dioda.com.pl/forum/topics20/szybki-start-z-winavr-vt513.htm
utworzylem plik makefile zmieniajac na odpowiednie:
nazwe, typ atmegi, F_CPU oraz rodzaj programatora (uzywam STK200)
Utworzony plik .hex laduje do atmegi ponyprogiem. Niestety program nie dziala, dioda nie swieci wcale nie mowiac o miganiu. Dodam ze atmega jest ok, po wgraniu ponownie pierwszego prostego programu zapalajacego diode jest ok.
Zakladam ze kody sa poprawne a problem tkwi w ustawieniu bitow konfiguracyjnych i ewentualnie pliku makefile.
Prosze o wypowiedz co robie nie tak?
pozdrawiam,
deviland
Docelowo musze stworzyc program do transmisji szeregowej wykorzystujacy 2 USARTy. Stad moj wybor padl na Atmega162.
Poniewaz bedzie to transmisja z predkoscia 9600b/s na zaprojektowanej plytce znalazl sie kwarc 7,3728MHz.
Poniewaz dopiero zaczynam z uC pierwszym programem jaki wgralem aby sprawdzic czy wszystko dziala byl znaleziony na http://www.avrtutor.com/tutorial/thermo/led.php
#include <avr/io.h> // header file
int main(void) // program starts here
{
DDRB = 255; // set port B for output
PORTB = 0; // set port B pins to 0
return (0); // return something
}
Po skompilowaniu i wgraniu do atmegi pelnia szczescia, dioda swieci.
Nastepny krok : migajaca dioda ...
Probowalem dwa kody:
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRD |= _BV(1);
PORTD &= ~_BV(1);
unsigned char i;
for (;;)
{
PORTD ^=_BV(1);
for (i = 0; i <100; i++)
_delay_ms(10);
}
return 0;
}
oraz
#include <avr/io.h>
/// Typedefs //////////
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
/// Defines ///////////
#define forever 117
#define LEDOFF PORTB |= (1<<4)
#define LEDON PORTB &= ~(1<<4)
/// Prototypes ////////
void InitPorts (void);
void Delay (u32 count);
int main(void)
{
InitPorts();
while (forever)
{
LEDON; Delay(20000);
LEDOFF; Delay(20000);
}
}
void InitPorts(void)
{
DDRB |= 1<<DDB4;
}
void Delay(u32 count)
{
while(count--);
}
pierwszy z dioda.com.pl, drugi z avrtutor.com obydwa nie dzialaja.
Bity konfiguracyjne ustawilem nastepujaco:
programowane przy pomocy ISPProg.
Postepujac zgodnie z instrukcja http://www.dioda.com.pl/forum/topics20/szybki-start-z-winavr-vt513.htm
utworzylem plik makefile zmieniajac na odpowiednie:
nazwe, typ atmegi, F_CPU oraz rodzaj programatora (uzywam STK200)
Utworzony plik .hex laduje do atmegi ponyprogiem. Niestety program nie dziala, dioda nie swieci wcale nie mowiac o miganiu. Dodam ze atmega jest ok, po wgraniu ponownie pierwszego prostego programu zapalajacego diode jest ok.
Zakladam ze kody sa poprawne a problem tkwi w ustawieniu bitow konfiguracyjnych i ewentualnie pliku makefile.
Prosze o wypowiedz co robie nie tak?
pozdrawiam,
deviland
![[Atmega162][C] migająca LED [Atmega162][C] migająca LED](https://img513.imageshack.us/img513/3605/fusy.png)