Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowanie atmega8 - coś nie do końca chce mi działać

Tomasz1902 12 Paź 2017 21:00 342 26
  • #1 12 Paź 2017 21:00
    Tomasz1902
    Poziom 3  

    Witam
    Mam atmege8 i zaczynam do programować w eclipse.
    Chciałem wgrać ten program:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I nie chce mi on działać. Działa tak że dioda na PC0 świeci się cały czas, i nic jej nie zgasi. Gdy w mkAVRCalculator zaznaczyłem "wykonaj kasowanie AVR" to dioda gaśnie ale gdy wgram jakikolwiek program to dioda się zaświeca.
    Myślę, że jasno to zrozumiałem i panowie mi pomogą.
    Pozdrawiam

  • #2 12 Paź 2017 21:14
    maly_ninja
    Poziom 11  

    A jak masz podłączoną tę diodę? Pokaż jakiś minimalny schemat, może to trochę rozjaśni sytuację.

  • #3 12 Paź 2017 21:18
    Tomasz1902
    Poziom 3  

    maly_ninja napisał:
    A jak masz podłączoną tę diodę? Pokaż jakiś minimalny schemat, może to trochę rozjaśni sytuację.

    Proszę :D

  • #4 12 Paź 2017 21:24
    maly_ninja
    Poziom 11  

    Bardziej chodziło mi o jakiś schemat ideowy, ale ok, tak też coś widać :p
    Nie widzę tylko jak masz podłączoną diodę, do pinu PC0 masz podłączoną katodę czy anodę diody?
    Po wgraniu obojętnie jakiego programu dioda świeci, czy po wgraniu tego co podałeś? Próbowałeś podpiąć pod jakiś inny pin?
    Nie widzę tylko jak podłączone są te dwie diody (zgaszone) ale do prób może je wyjmij, żeby nie przeszkadzały. :d

  • #5 12 Paź 2017 21:25
    marekhab
    Poziom 31  

    Nie ustawiłeś portu czy jest wejście czy wyjściem, można dopatrzeć się na pierwszy rzut oka kilka podstawowych błędów.
    Po co się rozpisywać i zaraz krytykować (ja też tak zaczynałem).
    Masz tu link do prostego i w miarę krótkiego (tylko 5 części)kursu, ważna abyś czytał ze zrozumieniem, pisz co opanowałeś, daj znać jak zrozumiesz dlaczego Twój kod nie działa.
    http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=2
    Pierwszą część kursu pomiń jeśli używasz Eclipsa

  • #6 12 Paź 2017 21:26
    lukaszd82
    Poziom 15  

    Proponuję przejrzeć i poćwiczyć:
    Link

  • #7 12 Paź 2017 21:26
    maly_ninja
    Poziom 11  

    Przecież ma ustawiony pin PC0 jako wyjście:

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #8 12 Paź 2017 21:31
    Tomasz1902
    Poziom 3  

    maly_ninja napisał:
    Bardziej chodziło mi o jakiś schemat ideowy, ale ok, tak też coś widać :p
    Nie widzę tylko jak masz podłączoną diodę, do pinu PC0 masz podłączoną katodę czy anodę diody?
    Po wgraniu obojętnie jakiego programu dioda świeci, czy po wgraniu tego co podałeś? Próbowałeś podpiąć pod jakiś inny pin?
    Nie widzę tylko jak podłączone są te dwie diody (zgaszone) ale do prób może je wyjmij, żeby nie przeszkadzały. :d

    Diode mam podłączoną anodą. I jak usunąłem cały kod i go wgrałem do też świeciła.

    Dodano po 3 [minuty]:

    marekhab napisał:
    Nie ustawiłeś portu czy jest wejście czy wyjściem, można dopatrzeć się na pierwszy rzut oka kilka podstawowych błędów.
    Po co się rozpisywać i zaraz krytykować (ja też tak zaczynałem).
    Masz tu link do prostego i w miarę krótkiego (tylko 5 części)kursu, ważna abyś czytał ze zrozumieniem, pisz co opanowałeś, daj znać jak zrozumiesz dlaczego Twój kod nie działa.
    http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=2
    Pierwszą część kursu pomiń jeśli używasz Eclipsa

    Kod: c
    Zaloguj się, aby zobaczyć kod

    chyba ustawiłem :D

  • #9 12 Paź 2017 21:33
    simw
    Poziom 13  

    Tomasz1902 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I nie chce mi on działać. Działa tak że dioda na PC0 świeci się cały czas, i nic jej nie zgasi. Gdy w mkAVRCalculator zaznaczyłem "wykonaj kasowanie AVR" to dioda gaśnie ale gdy wgram jakikolwiek program to dioda się zaświeca.
    Myślę, że jasno to zrozumiałem i panowie mi pomogą.
    Pozdrawiam


    Po pierwsze to brakuje Ci w programie pętli while:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie pamiętam dokładnie, ale chyba w takim wypadku procesor cały czas Ci się resetuje, z dużą prędkością i dlatego wydaje się dioda świeci, a właściwie miga.
    Dopisz pętlę i sprawdź efekt.

  • #10 12 Paź 2017 21:41
    Tomasz1902
    Poziom 3  

    simw napisał:
    Tomasz1902 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    I nie chce mi on działać. Działa tak że dioda na PC0 świeci się cały czas, i nic jej nie zgasi. Gdy w mkAVRCalculator zaznaczyłem "wykonaj kasowanie AVR" to dioda gaśnie ale gdy wgram jakikolwiek program to dioda się zaświeca.
    Myślę, że jasno to zrozumiałem i panowie mi pomogą.
    Pozdrawiam


    Po pierwsze to brakuje Ci w programie pętli while:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie pamiętam dokładnie, ale chyba w takim wypadku procesor cały czas Ci się resetuje, z dużą prędkością i dlatego wydaje się dioda świeci, a właściwie miga.
    Dopisz pętlę i sprawdź efekt.

    Nic to nie pomogło :(

  • #11 12 Paź 2017 21:42
    maly_ninja
    Poziom 11  

    A próbowałeś podłączyć diodę do innego pinu? Przetestuj jakieś inne losowe, może PC0 jest jakoś uszkodzony?

  • #12 12 Paź 2017 21:44
    marekhab
    Poziom 31  

    Masz tu prosty krótki kod.

    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #13 12 Paź 2017 21:59
    Tomasz1902
    Poziom 3  

    marekhab napisał:
    Masz tu prosty krótki kod.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Nic się nie dzieje, dalej się świeci. A te dwie czerwone to cały czas są zgaszone :(

  • #14 12 Paź 2017 22:02
    maly_ninja
    Poziom 11  

    Nie wiem czy próbowałeś robić to co napisałem. Zaczynaj od minimalistycznego podejścia, wyjmij te dwie diody, zostaw tylko jedną oraz podepnij ją do jakiegoś innego pinu, albo i portu. Jeśli to zadziała to możesz dokładać resztę.

  • #15 12 Paź 2017 22:08
    Tomasz1902
    Poziom 3  

    maly_ninja napisał:
    Nie wiem czy próbowałeś robić to co napisałem. Zaczynaj od minimalistycznego podejścia, wyjmij te dwie diody, zostaw tylko jedną oraz podepnij ją do jakiegoś innego pinu, albo i portu. Jeśli to zadziała to możesz dokładać resztę.

    Tak próbowałem, zostawiłem diode i rezystor i nic.
    Jest jeszcze jedna rzecz. Jak podepnę diode tak jak teraz tylko zmienie port na dowolny inny i dotknę nóżki tej od mikrokontrolera to zaświeca się tylko tak lekko.

  • #16 12 Paź 2017 22:15
    maly_ninja
    Poziom 11  

    Ale po zmianie pinu/portu zmieniasz go w programie (np. PC0 na PB5)?
    Szczerze mówiąc to nie mam pomysłu co to może być, masz możliwość podłączenia innej atmegi? Być może czegoś nie zauważam, poczekajmy aż ktoś inny się wypowie :D

  • #17 12 Paź 2017 22:20
    Tomasz1902
    Poziom 3  

    nie, nic w programie nie zmieniam. A możliwości podłączenia innej atmegi chwilowo nie mam :(

  • #18 12 Paź 2017 22:23
    maly_ninja
    Poziom 11  

    Musisz coś w programie zmienić, żeby się przekonać czy port PC0 nie jest uszkodzony.
    Podepnij diodę do jakiegoś innego portu/pinu np. PB1 i zmień w programie PC0 na PB1, wtedy zaprogramuj atmegę i sprawdź czy działa.

    Jeśli diodę podepniesz pod PB1 program może wyglądać jakoś tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    @EDIT
    Zmieniłem PB3 na PB1, PB3 to MOSI więc lepiej nie mieszać Ci na początku :D

  • #20 12 Paź 2017 22:34
    Tomasz1902
    Poziom 3  

    maly_ninja napisał:
    Musisz coś w programie zmienić, żeby się przekonać czy port PC0 nie jest uszkodzony.
    Podepnij diodę do jakiegoś innego portu/pinu np. PB1 i zmień w programie PC0 na PB1, wtedy zaprogramuj atmegę i sprawdź czy działa.

    Jeśli diodę podepniesz pod PB1 program może wyglądać jakoś tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    @EDIT
    Zmieniłem PB3 na PB1, PB3 to MOSI więc lepiej nie mieszać Ci na początku :D

    Dalej nic.
    A może coś wcześniej źle wgrałem, nie do tej pamięci co trzeba czy coś i przez to jest cały czas ten sam program. I warto by było usunąć wszystko z atmegi do zera. I wtedy wgrać na nowo wszystko? tylko jak to zrobić ?

    Dodano po 1 [minuty]:

    Piotrus_999 napisał:
    W naturze cudów nie ma. Jak programistę szkoda te atmege i jakie masz komunikaty w trakcie programowania



    Launching C:\AVRRDUDE\avrdude -pm8 -cusbasp -Uflash:w:Pierwszy.hex:a
    Output:

    Please wait ...

    avrdude_mk.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude_mk.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% -0.00s

    avrdude_mk.exe: Device signature = 0x1e9307
    avrdude_mk.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
    To disable this feature, specify the -D option.
    avrdude_mk.exe: erasing chip
    avrdude_mk.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude_mk.exe: reading input file "Pierwszy.hex"
    avrdude_mk.exe: input file Pierwszy.hex auto detected as Intel Hex
    avrdude_mk.exe: writing flash (70 bytes):

    Writing | ################################################## | 100% 0.05s

    avrdude_mk.exe: 70 bytes of flash written
    avrdude_mk.exe: verifying flash memory against Pierwszy.hex:
    avrdude_mk.exe: load data flash data from input file Pierwszy.hex:
    avrdude_mk.exe: input file Pierwszy.hex auto detected as Intel Hex
    avrdude_mk.exe: input file Pierwszy.hex contains 70 bytes
    avrdude_mk.exe: reading on-chip flash data:

    Reading | ################################################## | 100% 0.03s

    avrdude_mk.exe: verifying ...
    avrdude_mk.exe: 70 bytes of flash verified

    avrdude_mk.exe: safemode: Fuses OK

    avrdude_mk.exe done. Thank you.

    Compiled special for http://forum.atnel.pl (v5.11.1)

    avrdude finished

  • #22 12 Paź 2017 23:13
    Tomasz1902
    Poziom 3  

    Piotrus_999 napisał:
    Rozlacz wszystko i połącz ponownie jaki masz opornik przy diodzie? Nie palisz portów?

    Nie powinienem. Opornik 330ohm 😁

  • #23 12 Paź 2017 23:23
    Piotrus_999
    Poziom 39  

    Jak pisałem cudów nie ma. Tak samo dotykanie pinów nie powoduje swiecenia. Zrób układ jeszcze raz. Przy okazji to rozumiem że chcesz oslepnac do pracy na stykowce daj 1k albo 1.5k może więcej żeby świeciło a nie oslepialo. Nie rozumiem tej manii wypalania oczu

    Dodano po 1 [minuty]:

    A przy okazji jesteś pewien że to wgrywaszto jest to co kompilujesz? Skasuj te pliki i sprawdź

  • #24 12 Paź 2017 23:28
    PiotrPitucha
    Poziom 32  

    Witam
    A zasiliłeś AVCC ?
    Pracujesz na porcie analogowym to wypada go zasilić.
    Pozdrawiam

  • #25 12 Paź 2017 23:36
    Piotrus_999
    Poziom 39  

    PiotrPitucha napisał:
    A zasiliłeś AVCC ?
    Pracujesz na porcie analogowym to wypada go zasilić.
    Abstrahując od tego że zasilać cały ukłład jest dobrze - ale kol @PiotrPitucha co to jest port analogowy? pierwsze słyszę.

  • #26 12 Paź 2017 23:44
    Tomasz1902
    Poziom 3  

    PiotrPitucha napisał:
    Witam
    A zasiliłeś AVCC ?
    Pracujesz na porcie analogowym to wypada go zasilić.
    Pozdrawiam

    Tak zasiliłem 😂

  • #27 13 Paź 2017 00:16
    R-MIK
    Poziom 37  

    simw napisał:

    Po pierwsze to brakuje Ci w programie pętli while:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie pamiętam dokładnie, ale chyba w takim wypadku procesor cały czas Ci się resetuje, z dużą prędkością i dlatego wydaje się dioda świeci, a właściwie miga.
    Dopisz pętlę i sprawdź efekt.

    W ostatniej sekcji FINI jest wieczna petla. Jeśli nie używa WDG to nie będzie resetu. Nawet gdyby reset był, to standardowo reset trwa 64ms a wtedy porty pracują jako wejścia. W tej sytuacji dioda by nie swieciła.

    Skoro jest kilka ledów, to podjąłbym próbę zaświecienia takze ich. Może faktycznie port jest uszkodzony.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME