logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Attiny2313 dziwny problem, z banalnym programem

vogis 18 Wrz 2009 21:07 1191 4
  • #1 7032801
    vogis
    Poziom 10  
    Dobry wieczór,

    Mam zestaw uruchomieniowy ZL11AVR, dokumentacja na stronie http://www.btc.pl/pdf/zl11avr.pdf

    Bawiłem się już w BASCOMie z tą płytką i wszystko działało. Chciałbym się teraz nauczyć pisać w C, a że mam ten zestaw to postanowiłem go wykorzystać.

    I tu mam ogromny problem, bo nie chce ten program działać:

    #include <avr/io.h>
    #include <stdlib.h>
    
    
    
    int main(void)
    {
     while(1)
     {
     DDRB=0xFF; //all port B as outs
     PORTB=0x0F; //port B set 00001111
     }
    
    } 


    Programator mam dobry, bo jak ładuję .hex z BASCOMa przez AVRStudio to wszystko działa.

    Jest jeszcze dziwniej, bo gdy robię te same operacje na porcie D to wszystko jest OK.

    A na porcie B nie chce działać... Czemu tak jest?

    Bo port B jest używany do programowania? Nie rozumiem jaki to by miało wpływ...

    Bardzo proszę o pomoc.
  • #2 7033061
    Kuniarz
    Moderator Projektowanie
    Odłączyłeś programator ?
    Pomogłem? Kup mi kawę.
  • #3 7033094
    korrus666
    Poziom 40  
    Port B ma też inne funkcje i na starcie na pewno b0 i b1 są ustawione jako wejście analogowego komparatora. Musisz je przełączyć na tryb pracy jako cyfrowe I/O. Dwa pozostałe porty czyli 2 i 3 powinny działać normalnie. sprawdziłeś wszystkie 4 ustawiane bity ?
  • #4 7033434
    vogis
    Poziom 10  
    tak, odłączyłem programator.

    Nie do końca rozumiem...
    Czyli ustawienie w ten sposób jak zrobiłem może nie wystarczać?
    Muszę pogrzebać coś w fusebitach?

    Inne wyjścia mikroprocesora też mogą mieć inne funkcje, czemu nie ma z nimi takiego problemu?

    Dodano po 6 [minuty]:

    chyba już wiem jak to zrobić. Będę pisał jeszcze jakby coś ;) pozdrawiam!
  • #5 7073814
    MacGyver 7
    Poziom 21  
    A spróbuj w assemblerze. Może to jakiś dziwny błąd kompilatora skoro działa w bascomie, oraz na portach PD w języku C.. Tu masz odpowiednik twojego programu w assemblerze.


    .INCLUDE "tn2313def.inc"

    petla:
    ldi R16, 255 // 0xFF
    out DDRB, R16
    ldi R16, 15 // 0x0F
    out PORTB, R16
    rjmp petla
REKLAMA