Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega8 - Prosty program nie chce działać.

Kaktus93 28 Gru 2012 17:31 1371 10
  • #1 28 Gru 2012 17:31
    Kaktus93
    Poziom 8  

    Witam
    Wiem iż problem jest tak trywialny że nie powinien się tu znaleźć, ale utknąłem przy programie który ma tylko wystawić stan wysoki na linii B. Program się poprawnie wczytuje do pamięci. Woltomierz nic tam nie pokazuje.

    Code:

    #include <avr/io.h>
    int main(void){
    DDRB =0b11111111;
        while(1){
             PORTB =0x0;
    }
    }


    To wszystko na płytce:
    Atmega8 - Prosty program nie chce działać.

    0 10
  • #2 28 Gru 2012 17:36
    BlueDraco
    Specjalista - Mikrokontrolery

    Ten program wystawia stan niski na całym porcie B. Coś jest nie tak?

    0
  • #3 28 Gru 2012 17:44
    Kaktus93
    Poziom 8  

    Próbowałem także z wartościami 255, 0xFF i innymi. Jest na fabrycznych ustawieniach.

    0
  • #5 28 Gru 2012 18:10
    BlueDraco
    Specjalista - Mikrokontrolery

    Z tego, co dotychczas zeznałeś, Twój program działa poprawnie. Podaj przykład programu, który Twoim zdaniem działa niepoprawnie i napisz, po czym to poznajesz (tylko najpierw sprawdź, że rzeczywiście jest źle.

    0
  • #6 28 Gru 2012 18:17
    mi14chal
    Poziom 28  

    Jak chcesz mieć stan wysoki to musisz zrobić:
    DDRB = 0xFF;
    PORTB = 0xFF;

    0
  • #7 28 Gru 2012 19:17
    Kaktus93
    Poziom 8  

    Program w pierwszym poście z jakąkolwiek wartością nie chce działać(także z pętlą for), sprawdzam to woltomierzem.

    0
  • #8 28 Gru 2012 19:21
    mi14chal
    Poziom 28  

    Jeżeli masz program jak w 1 poście gdzie ustawiasz stan niski na porcie to nic dziwnego że woltomierz nic nie pokazujesz. Zrób tak jak napisałem w #6 poście.

    0
  • #9 28 Gru 2012 19:35
    Kaktus93
    Poziom 8  

    Użyłem poleceń ze strony http://edap.pl/artykuly/jezyk-c-i-mikrokontrolery-avr i wszystko jak należy.
    Możecie mi jeszcze powiedzieć czemu te nie działały ?

    Code:

    avr-gcc -mmcu=atmega8 mig.c -o mig
    avr-objcopy -O ihex mig mig.hex
    sudo avrdude -c usbasp -p m8 flash:w:mig.hex

    0
  • #10 02 Sty 2013 22:08
    czolgowy
    Poziom 10  

    Dlatego,że porty mogą pracować jako SOURCE i DRAIN, czyli mogą "wysyłać" prąd lub "przyjmować". Wg tamtej strony i schematu PORTB jest ustawiony jako DRAIN. Sprawdź jak masz podłączoną LED. Są dwie opcje

    1. SOURCE, wtedy LED podłączony PIN > REZYSTOR > GND i "zapalasz" wystawiając stan wysoki czyli "1".
    2. DRAIN, wtedy LED podłączony PIN > REZYSTOR > VCC i "zapalasz" wystawiając stan niski czyli "0"

    Oczywiście pamiętaj o polaryzacji LED, obrazowo "krótka" nóżka w stronę GND, a "dłuższa" w stronę VCC.

    0
  • #11 03 Sty 2013 02:33
    elords
    Poziom 8  

    Mnie ten program działa. Miałem tą samą płytkę uruchomieniową niestety nie mama zbyt dobrych wspomnień... jak podłączyłem do niego układ ethernetowy to układy nie pracowały zbyt dobrze (nie wiem dokładnie dlaczego)

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0