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.

[Attiny2313] Problem z zaprogramowaniem attiny2313

burito1 18 Lis 2012 22:04 2343 18
  • #1 18 Lis 2012 22:04
    burito1
    Poziom 9  

    Od paru dni męczę się z progamowaniem w c attiny2313 z płytki uruchomieniowej. Miałem książkę z bascomem, ale postanowiłem się przerzucić na c. Wszystko na bascomie działało, a teraz nie mogę skompilować żadnego programu. Avr studio nie generuje mi hexa(jest ciągle taki sam), a w Eclipse avrdude nie jest w stanie wykryć mojego programatora zl20prg i też nie generuje hexa. Nie mam pojęcia jak mam się zabrać za programowanie, ponieważ nic mi nie działa. Czy ktoś mógłby skompilować mi kod i podesłać hexa, żebym mógł sprawdzić czy może ja coś robię źle.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 18
  • #2 18 Lis 2012 22:11
    Dzedorak
    Poziom 13  

    W załączniku przesyłam skompilowany projekt z AS6.

    Masz zainstalowany Win-AVR?
    W AS6 wybierałeś projekt C i odpwoiednie ATtiny?

    0
  • #3 18 Lis 2012 22:19
    burito1
    Poziom 9  

    Nie działa po wgraniu. Wydaje mi się, że nie powinno mieć znaczenia w jakim języku zostanie to zaprogramowane, aby działało. Czy coś w tym programie może być źle?
    Ustawiam chyba poprawnie portB, a płytka ani mrugnie. A dostałem taki sam hex z Avr studio. Czyli może jednak on coś robi. Tak wybrałem Attiny2313. Mam WinAVR. Nie wiem co może być przyczyną

    0
  • #4 18 Lis 2012 22:50
    dondu
    Moderator Mikrokontrolery Projektowanie

    burito1 napisał:
    Avr studio nie generuje mi hexa(jest ciągle taki sam)

    Zdecyduj się - generuje czy nie generuje. Jeżeli nie generuje to skąd wiesz, że jest taki sam?

    Poza tym:
    - pokaż komunikaty z kompilacji,
    - pokaż schemat.

    Najczęściej występujące problemy z programowaniem: http://mikrokontrolery.blogspot.com/2011/04/problemy-z-zaprogramowaniem.html

    0
  • #5 18 Lis 2012 23:39
    burito1
    Poziom 9  

    Jednak generuje hexa, ale dalej nie wiem czemu nie działa.

    Log z kompilacji:

    Code:
    ------ Build started: Project: GccApplication1, Configuration: Release AVR ------
    
    Build started.
    Project "GccApplication1.cproj" (default targets):
    Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
    Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\Vs\Compiler.targets" from project "F:\Classified\Mikrokontroler\AVR\GccApplication1\GccApplication1\GccApplication1.cproj" (target "Build" depends on it):
       Task "RunCompilerTask"
          C:\Program Files (x86)\Atmel\Atmel Studio 6.0\make\make.exe all
          Building file: .././GccApplication1.c
          Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -Os -fpack-struct -fshort-enums -Wall -c -std=gnu99 -MD -MP -MF "GccApplication1.d" -MT"GccApplication1.d" -MT"GccApplication1.o"  -mmcu=attiny2313   -o"GccApplication1.o" ".././GccApplication1.c"
          In file included from .././GccApplication1.c:9:0:
    c:\program files (x86)\atmel\atmel studio 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h(90,3): #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]
          Finished building: .././GccApplication1.c
          Building target: GccApplication1.elf
          Invoking: AVR/GNU Linker : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe" -o GccApplication1.elf  GccApplication1.o   -Wl,-Map="GccApplication1.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group  -mmcu=attiny2313 
          Finished building target: GccApplication1.elf
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature  "GccApplication1.elf" "GccApplication1.hex"
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -j .eeprom  --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0  --no-change-warnings -O ihex "GccApplication1.elf" "GccApplication1.eep" || exit 0




          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objdump.exe" -h -S "GccApplication1.elf" > "GccApplication1.lss"
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature  "GccApplication1.elf" "GccApplication1.srec"
          "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-size.exe" "GccApplication1.elf"
             text      data       bss       dec       hex   filename
              140         0         0       140        8c   GccApplication1.elf
       Done executing task "RunCompilerTask".
       Task "RunOutputFileVerifyTask"
                Program Memory Usage    :   140 bytes   6,8 % Full
                Data Memory Usage       :   0 bytes   0,0 % Full
       Done executing task "RunOutputFileVerifyTask".
    Done building target "CoreBuild" in project "GccApplication1.cproj".
    Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
    Target "Build" in file "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\Vs\Avr.common.targets" from project "F:\Classified\Mikrokontroler\AVR\GccApplication1\GccApplication1\GccApplication1.cproj" (entry point):
    Done building target "Build" in project "GccApplication1.cproj".
    Done building project "GccApplication1.cproj".

    Build succeeded.
    ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


    Schemat: http://www.btc.pl/pdf/zl11avr.pdf

    0
  • #6 19 Lis 2012 00:01
    Dzedorak
    Poziom 13  

    Nie no, czyli AS6 działa normalnie, pozostaje pytanie dlaczego kod nie działa, a to już ciekawsze zagadnienie :D.

    Z tego co widzę chcesz zamrugać jednym modułem wyświetlacza 7-segmentowego, tak? A co zrobiłeś z linią sterującą? programowo jej nie obsługujesz więc musisz "sprzętowo" :D

    0
  • #7 19 Lis 2012 00:03
    dondu
    Moderator Mikrokontrolery Projektowanie

    Ignorujesz warningi, a to niedobrze:

    Cytat:
    c:\program files (x86)\atmel\atmel studio 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h(90,3): #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]


    Ustaw zegar w opcjach : http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html

    0
  • #8 19 Lis 2012 00:04
    Dzedorak
    Poziom 13  

    Tak ogólnie to rzeczywiście niedobrze, ale tutaj tak czy tak powinno działać :P

    0
  • #10 19 Lis 2012 08:47
    burito1
    Poziom 9  

    Programuję za pomocą programu Kamprog programatorem zl20prg. Nie ma błędów. Komunikat jest następujący:
    Writing Flash .

    Programming mode disable.
    Entering programming mode.
    Programming mode enabled.
    Reading Flash..

    Programming mode disable.
    Flash memory verification succeded.

    Przy wygrywaniu programów z bascoma nie ma najmniejszych problemów, więc albo ja źle napisałem kod, albo AS 6 robi coś dziwnego i źle generuje hexa.
    Może brak F_CPU to powoduje? A czy wersja ma znaczenie? Chyba powinno się z release'a wgrywać. A macie może jakiś przykładowy program na Attiny2313 w hexie napisanym w c? Sprawdziłbym czy działa. A możliwe, że ustawienie fusebitów jest inne dla c i dla bascom? Wydaje mi się, że nie, ale dopiero zaczynam się uczyć i nie jestem pewien.

    Teraz jest chyba dobrze, nie mam błędu z F_Cpu, ale dalej nie działa.

    Code:
    #define F_CPU 8000000UL
    
    #include <avr/io.h>
    #include <util/delay.h>


    //************************************
    int main(void)
    {
       DDRB=0xFF;
       while(1)
       {
          PORTB= 0xff;
          _delay_ms(1000);
          PORTB =0x00;
          _delay_ms(1000);
       }   
          
    }

    0
  • #11 19 Lis 2012 15:34
    dondu
    Moderator Mikrokontrolery Projektowanie

    Znowu piszesz:

    burito1 napisał:
    ... ale dalej nie działa.

    a prosiłem o:

    dondu napisał:
    ... więc przydałby się dokładniejszy opis, co oznacza:

    burito1 napisał:
    ... ponieważ nic mi nie działa.

    i czy programowanie przebiega poprawnie.


    Pokazałeś schemat płytki i program, ale nie wiemy co chcesz osiągnąć.
    Kolega Dzedorak wyjaśnił Ci na bazie schematu, ale także wróży, bo nie wiemy czy chcesz zapalać segmenty wyświetlacza LED, czy sprawdzasz miernikiem, albo podłączoną diodą LED, ...


    Swoją drogą, to nie doczytałeś artykułu z linku, który Ci podałem, skoro definiujesz zegar w kodzie programu (można, ale odradzamy tę wersję).

    0
  • #12 19 Lis 2012 15:56
    burito1
    Poziom 9  

    Chce zapalic segmenty wyswietlacza na plytce. Nie wazne w jaki sposob chce sie upewnic, ze dziala po zaprogramowaniu w c. W bascomie portB odpowiadal za segmenty wyswietlacza, wiec chyba w c tez. Jezeli macie jakikolwiek program, ktory uruchomilby segmenty wyswietlacza, to bardzo ptosilbym o podeslanie.

    0
  • #13 19 Lis 2012 16:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    Pisał już o tym:

    Dzedorak napisał:
    Z tego co widzę chcesz zamrugać jednym modułem wyświetlacza 7-segmentowego, tak? A co zrobiłeś z linią sterującą? programowo jej nie obsługujesz więc musisz "sprzętowo" :D

    Czy wykonałeś jego zalecenie? Innymi słowy patrząc na schemat, który segment LED włączyłeś zworką i w jaki sposób? Zależnie od tego albo wystarczy zworka, albo trzeba rozbudować program dodając obsługę jednego z pinów sterujących poszczególnymi segmentami.

    Możesz także wykorzystać segment bez zworki, ale wtedy musisz sterować go pinem z portu D (czyli rozbudować program) - patrz schemat.

    Napisz dokładnie, który segment chcesz załączyć i jak ustawiłeś zworki.

    0
  • #14 19 Lis 2012 17:23
    burito1
    Poziom 9  

    Czyli wyglada na to, ze moim bledem jest to, ze mysle, ze wystarczy zrobic podobnie jak w bascomie. Czyli musze zajac sie obsluzeniem programowym leda.

    0
  • #16 19 Lis 2012 19:33
    burito1
    Poziom 9  

    Jestem jeszcze słabo doinformowany, muszę poczytać jeszcze sporo. Jeżeli do tego czasu nie znajdę odpowiedzi, to będę musiał was poprosić o pomoc. Nie będę wam zawracał gitary, bo dopiero się uczę, a wy mnie podstaw nie nauczycie, bo od tego są książki i kursy. Dzięki za pomoc, wygląda na to, że jeszcze za mało wiem.

    0
  • #18 19 Lis 2012 20:51
    burito1
    Poziom 9  

    Udało mi się. Zapomniałem o ustawieniu portu D i przez to nic się nie wyświetlało. Dzięki za pomoc. Czyli jak zwykle niedopatrzenie było problemem.

    0