Dawid
Guest
Fri Sep 08, 2006 4:54 pm
Wietc na poczatek pracyz atmega postanowilem napisac prosty program
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
problem. rogramowac sie programuje. Oto kod źródłowy:
#include <avr/io.h>
int main (void)
{
PORTD|=1<<PD7;
}
\i do portu PD7 podlaczam diode a druga czesc diody do masy.
Go GND mam mase do VCc plus czyli 4.5V. Nic pozatym nie mam podlaczone.
programuje atmege AVR studio a wbijam soft ProProgRS.1.1.
Poczytalem ze moze byc problem z Fuses Bist ale nie za bardzo wiem jak to
ustawic probowalem roznych spsobow i nic nie daje dioda nie swieci sie za
cholere. W symulatorze niby dziala.
Dziękuje za pomoc
Zibias
Guest
Fri Sep 08, 2006 5:03 pm
Quote:
Wietc na poczatek pracyz atmega postanowilem napisac prosty program
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
problem. rogramowac sie programuje. Oto kod źródłowy:
Quote:
#include <avr/io.h
int main (void)
{
PORTD|=1<<PD7;
}
Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
wejście.
DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
Pozatym nie powinieneś podłaczać diody bezpośrednio, a przez opornik, np 330
omów
Kolejna uwaga, porty w AVR mają większy prąd gdy zwierają do masy czyli
gdy podają stan logiczny 0. Lepiej jest diodę (z opornikiem) podpiąć do
zasilania
a następnie do portu. Gdy wpiszesz 0 do portu to się zapali, a gdy 1 to
zgaśnie
Dawid
Guest
Fri Sep 08, 2006 5:16 pm
Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
Quote:
wejście.
DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
nie pomoglo. W czym szukac dalej?
Zibias
Guest
Fri Sep 08, 2006 5:54 pm
Użytkownik "Dawid" <safelock@skasuj.cdrinfo.pl> napisał w wiadomości
news:eds8in$6bp$1@atlantis.news.tpi.pl...
Quote:
Brakuje ustawienia kierunku portu D , domyślnie porty ustawiają się ajko
wejście.
DDR = 0b1xxxxxxx (x-do wykorzystania 1-wyjście, 0-wejście)
nie pomoglo. W czym szukac dalej?
Trochę szybko pisałem, powinno być na przykłąd tak:
int i,j =0;
DDRD = 0b10000000;
while(1)
{
PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
for(i=0;i<10000;i++) //petla czasowa
{
for(j=0;j<1000;j++);
}
PORTD |= (1<<PD7); //ustawia 1 na porcie D7 gasi leda
for(i=0;i<10000;i++) //petla czasowa
{
for(j=0;j<1000;j++);
}
}
Ten program na pewno działa (miga ledem), wrzuciłem na atmega16 z kwarcem
8MHz
Sprawdź czy leda podłaczyłes pw prawidłową sronę, (dołacz go do masy,
powinien świecić)
Michał
Guest
Fri Sep 08, 2006 5:58 pm
Użytkownik "Dawid" <safelock@skasuj.cdrinfo.pl> napisał w wiadomości
news:eds78d$183$1@atlantis.news.tpi.pl...
Quote:
Wietc na poczatek pracyz atmega postanowilem napisac prosty program
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
problem. rogramowac sie programuje. Oto kod źródłowy:
#include <avr/io.h
int main (void)
{
PORTD|=1<<PD7;
}
\i do portu PD7 podlaczam diode a druga czesc diody do masy.
Go GND mam mase do VCc plus czyli 4.5V. Nic pozatym nie mam podlaczone.
programuje atmege AVR studio a wbijam soft ProProgRS.1.1.
Poczytalem ze moze byc problem z Fuses Bist ale nie za bardzo wiem jak to
ustawic probowalem roznych spsobow i nic nie daje dioda nie swieci sie za
cholere. W symulatorze niby dziala.
Dziękuje za pomoc
Sprobuj tak:
#include <avr/io.h>
//#define sbi(port, bit) (port) |= (1 << (bit))
//#define cbi(port, bit) (port) &= (1 << (bit))
//jesli nie sa zdefiniowane w sfr_deffs.h
//poda na wyjscie PD7 stan wysoki czyli zapali diode podpieta
// do masy przez rezystror np 470R
int main (void)
{
sbi(DDRD,7);
sbi(PORTD,7);
for(;

{};
}
Pzdr
Michal
EM
Guest
Fri Sep 08, 2006 6:35 pm
Quote:
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
Co to za zasilacz?
Jakoś nie wydaje mi się by był stabilizowany.
ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie napięcie
i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
Oczywiście kod też musi być poprawny...
--
Pozdr
EM
Gejzero
Guest
Sat Sep 09, 2006 7:09 am
Użytkownik "EM" <edim123@poczta.onet.pl> napisał w wiadomości
news:edsd38$j33$1@news.onet.pl...
Quote:
oswiecajacy diode. Posiadam modul MMmega02 z propoxa. Zasuilam go 4.5 V
(powinno byc 5v ale zasilacz tylko mi daje 4.5 lub 6 ale to pewnie nie
Co to za zasilacz?
Jakoś nie wydaje mi się by był stabilizowany.
ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie
napięcie
i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
Oczywiście kod też musi być poprawny...
--
Pozdr
EM
Jak masz oryginalny procek ze sklepu to wyłącz kompatybilność z ATMEGA 103.
Gejzero.
Dawid
Guest
Sat Sep 09, 2006 11:32 am
Quote:
Co to za zasilacz?
zasilacz impulsowy na mierniku dokladnie 5.03V max moze dac do 1.5A
Quote:
Jakoś nie wydaje mi się by był stabilizowany.
ATmega może mieć włączony wewnętrzny układ resetujący, gdy spadnie
napięcie
i nie będzie działać przy zbyt niskim lub pulsującym napięciu.
Oczywiście kod też musi być poprawny...
\
Próbowalme wielu kodow ale dioda niechce si zaswiecic. Miernikiem
sprawdzalem to stan jest na 1.8V. Ale tak na kazdym porcie i dioda nawet nie
mrygnie:/
Dawid
Guest
Sun Sep 10, 2006 11:05 am
Quote:
int i,j =0;
DDRD = 0b10000000;
while(1)
{
PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
chyba klega pokickał cos. Na odwrót. Tutaj gaśnie.
Marcin Stanisz
Guest
Sun Sep 10, 2006 2:38 pm
Dnia Sun, 10 Sep 2006 13:05:30 +0200, Dawid napisał(a):
Quote:
int i,j =0;
DDRD = 0b10000000;
while(1)
{
PORTD &= ~(1<<PD7); //ustawia 0 na porcie D7 czyli zapala leda
chyba klega pokickał cos. Na odwrót. Tutaj gaśnie.
Zależy jak podłączysz. Jeśli anodą (trudne słowo

) do +5V (przez
rezystor), a katodą (jeszcze trudniejsze słowo!) do portu, to będzie tak,
jak napisał Zibias.
Pozdrawiam
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"