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

Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)

Ślepiec 10 Wrz 2008 22:12 527121 2015
  • #901
    madteus
    Poziom 10  
    Freddie Chopin napisał:
    https://www.elektroda.pl/rtvforum/forum12.html
    https://www.elektroda.pl/rtvforum/forum199.html

    widzisz te tematy napisane na niebiesko na samej gorze?

    4\/3!!

    Własnie tam chciałem umiescić mojego posta ale zamiast odpowiedzieć na posta utworzyłem nowy temat srrki za moj błąd.

    Balu napisał:
    AVR-GCC a C++ to nie to samo:>

    AVR-GCC to środowisko w którym sie programuje? Czy o to chodzi? C++ to język programowania to wiem. Prosze o sprostowanie jak żle coś pisze. Wiem też że mikrokontrolery programuje się w C a nie C++ ale jeśli umie się C++ to z C myślę, że problemu nie będzie.

    Aha bym zapomniał jak przenieść posta tam gdzie powinien być bo tutaj chyba nikt nie będzie chciał mi odpowiedzieć co zresztą rozumiem? Przepraszam za lamerskie pytania ale jestem nowy.
  • Relpol przekaźniki
  • #902
    marek_Łódź
    Poziom 36  
    Cytat:
    Szukałem na allegro bo wydaje mi sie że tam najtaniej chyba można kupić i znalazłem coś takiego Link


    Skoro nie ma już tego linka, napiszę "ogólnie" ;)

    Najtańsze to to nie jest, ale daje ładny zestaw peryferii i możliwość zasilania i ładowania programu przez USB (przynajmniej tak pisze sprzedający). Pewnie dlatego ten zestaw tak ładnie schodzi. Ładowanie się w jakieś mniejsze procesorki chyba nie ma sensu, bo bardzo szybko albo zabraknie pamięci, albo peryferii. W szczególności mutacja AT90Scóśtam jest wycofana z produkcji i na jej miejsce wprowadzono stosowne zamienniki np ATTiny2313 zamiast AT90S2313, czy ATMega8 w miejsce AT90S4433
  • #903
    madteus
    Poziom 10  
    Z tą płytką moge programować wszystkie w obudowie DIP40 oraz rozkładem pinów zgodnym z ATMega16 i programować w każdym środowisku przeznaczonym do AVRów, np. WinAVR, Image craft Codevision.

    marek_Łódź napisał:
    Cytat:
    Najtańsze to to nie jest...

    Macie może namiary na cos tańszego? Na czym się skupić przy wyborze płytki uruchomieniowej?

    Ponieważ linki zostały usunięte z powyższego postu (przepraszam nie wiedziałem że nie można umieszczać linków do aukcji internetowych. Więcej się to nie powtórzy :oops:) umieszczam opis gdyby ktoś jescze chciał coś dodać od siebie do nich.

    Zestaw uruchomieniowy (ewaluacyjny) ZL3AVR. Główne cechy:
    - mikrokontroler ATmega32 (DIP40),
    - rezonator kwarcowy o częstotliwości nominalnej 16 MHz,
    - 16-przyciskowa klawiatura (4x4),
    - pole sygnalizacyjne na 8 diodach LED,
    - 4 wyświetlacze 7-segmentowe LED (sterowanie multipleksowe),
    - alfanumeryczny wyświetlacz LCD o organizacji 2x16 znaków,
    - wyprowadzenie linii interfejsu I2C,
    - interfejs RS232,
    - 6-stykowe złącze PS/2,
    - nadajnik i odbiornik podczerwieni,
    - wejściowy tor analogowy napięć zmiennych (AC),
    - wejściowy tor analogowy napięć stałych (DC),
    - wyjściowy tor analogowy AC/DC,
    - złącze programowania ISP (np. ZL11PRG-M, lub STK500),
    - złącze JTAG,
    - złącza z wyprowadzonymi liniami we/wy mikrokontrolera,
    - zasilanie: około 9V AC-DC/500 mA.

    Płytka testowa Atmel ATMega16 USB LCD:
    * Procesor AVR ATMega16 w obudowie DIP40
    * Złącze USB (zasilanie i programowanie płytki z komputera)
    * Wyświetlacz LCD 2x16 (opcjonalnie)
    * Wyświetlacz 4x7 segmentowy
    * Czujnik temperatury DS18B20
    * Konwerter RS485
    * Gniazdo kart MMC/SD
    * Wyprowadzenia wszystkich pinów procesora
    * Zegar czasu rzeczywistego PCF8583
    * Pamięć EEPROM AT24C02
    * Odbiornik podczerwienie TSOP4836
    * Kwarc 16MHz
    * 5 przycisków
    * 4 diody LED
    * 5 wyjść tranzystorowych o mocy 500mA każdy
    * 2 potencjometry analogowe
    * Złącze programatora
    * 5 pinów napięcia +5V
    * 5 pinów masy
    * Stabilizator napięcia z układem zabezpieczającym przed odwrotną polaryzacją
    * Diodę informującą o podłączeniu zasilania.

    Dzięki podłączeniu płytki do komputera poprzez złącze USB przestają istnieć ograniczenia w postaci braku portu LPT do programatora albo portu COM do wymiany danych.
    Płytkę programujemy poprzez złącze USB a dzięki układowi FT232 płytkę widzimy jako port COM, nawet pod Windows Vista albo Linuxem.
    Przy wykorzystaniu magistrali RS485 można połączyć płytkę z dowolnym sterownikiem PLC bądź falownikiem, dzięki czemu mozna stworzyć małym kosztem sterownik bądź urządzenie wykonawcze idealnie dopasowane do potrzeb.
  • #904
    madteus
    Poziom 10  
    Chachiałbym się spytać jescze jaką książke polecacie, w której przykłady sa w C. Szukałem w księgarni btc ale przy opisach niektórych egzemplarzy nic o tym nie pisze ani we wstępie.
  • #905
    Balu
    Poziom 38  
    Nie ma dobrej książki do avr GCC sorry :-)

    Jedynie net. + praktyka ;-)

    A ogółem to C jest w dolińskim poruszone (BTC)
  • #906
    Citek
    Poziom 22  
    Witam
    Chciałbym rozpocząć zabawę z AVR-kami i na razie wymyśliłem sobie coś takiego jak na schemacie.
    Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)
    Czy mi to zadziała, czy może muszę jeszcze podpiąć jakiś kwarc lub inne rzeczy, no i najważniejsze pytanie, czy mogę testować działanie AVR bez wyciągania wtyczki od programatora, czy nie spalę sobie portu COM (mam programator na COMa).
    Aha jeszcze jedno czy te VCC i GND, które znajduje się w programatorze (zaznaczone na czerwono), ma być podłączone do głównego zasilania układu czy może ma być ciągnięte tylko z programatora (portu COM)), lub może w ogóle tego mam nie podłączać (czyżby służyło to tylko do programowania procka poza układem.
    Jeżeli kogoś uraziłem pytaniami albo moją wiedzą to z góry przepraszam ale wolę się spytać za nim uwalę procka albo jeszcze lepiej port COM.
  • #907
    don diego
    Poziom 32  
    Reset podłącz do Vcc przez rezystor kilka kiloomów. Między Vcc i GND na zasilaniu mikrokontrolera daj kondensator 100nF. Zasilanie w złączu programowania może być wymagane przez niektóre programatory. Masy programatora i mikrokontrolera muszą być połączone.

    Dodano po 2 [minuty]:

    Ja mam programator na COMa i nie muszę go odłączać po zaprogramowaniu. Nie powinno się nic stać. Jeśli mikrokontroler jest nowy, na fabrycznych fuse bitach, to działa na wewnętrznym oscylatorze i nie musisz dołączać kwarcu.
  • #908
    Citek
    Poziom 22  
    Ok, dzięki za odpowiedź. Poprawiłem rysunek, chyba o to chodziło.
    Jeszcze się spytam coś takiego, czy mam łączyć VCC(GND) z programatora z głównym VCC(GND) całego układu
  • #909
    don diego
    Poziom 32  
    Reset z programatora podłączyłbym bezpośrednio do mikrokontrolera, przed rezystorem. Jeśli mikrokontroler jest zasilany z zewnątrz i programator nie wymaga dodatkowego zasilania, to nie podłączaj Vcc w złączu do programowania. Nie wiem jaki masz programator. Ja mam SiProga i na pinie Vcc można z niego czerpać zasilanie do programowanego mikrokontrolera.
  • Relpol przekaźniki
  • #910
    pr2003
    Poziom 2  
    Dołącze się do tematu bo już nie wiem co jest źle i co mam zrobić.

    Chciałem sie pobawić programowaniem w assemblerze AVR-y no i poległem na starcie.

    Kupiłem w AVT zestaw PECEL do samodzielnego montazu. Wykonałem i wszystko jest ok (jeżeli chodzi o sam zestaw). Pojawia się menu itd itp. Przyszedł więc czas na próby programowania no i wielki "zonk". Własny programator STK 200/300 (kupiony do samodzielnego montażu odpowiedni zestaw w AVT) nie działał. Czytałem tutaj wiele godzin różne dyskusje na ten temat i zachęcony większością rad kupiłem na allegro gotowy programator STK 200/300. Niestety nadal nie działa.

    W programie Bascom (wersja 1.11.7.7. demo) (zgodnie z instrukcją w PECEL) po podłączeniu programatora i zasilania powinienem wybrać opcję: Options-->Programmer a następnie w polu Programmer wybrać pozycje STK200/STK300 Programmer i wybrać klawisz OK. Powinno się pojawić okna, gdzie mozna czytać pamięć mikroprocesora itp. Ja niestety po wybraniu klawisza OK (pole Port delay mam wartośc 0 - "zero") otrzymuje komunikat o treści jak niżej:

    "The HW stack, SW stack and frame space may not exceed the chip memory"

    Potem wziąłem na tapetę program PonyProg (wersja 2.07 Beta maj 2007). Wymuszam (już na wszelki wypadek) ustawienia na AVR micro oraz AT90S8535 (czyli na mikroprocesor jaki jest dołączany w zestawie PECEL AVT). Wybieram opcję setup-->Interface setup i ustawiam kolejno:
    Port: Parallel
    Programator: AVR ISP I/O
    Numer portu: LPT1
    wszystkie checkboxy (Invert RESET, Invert SCKL, Invert D-IN, Invert D-OUT) odznaczone (to znaczy nie zaznaczone "ptaszkiem").
    Wybieram OK a potem Setup-->Calibration i otrzymuje komunikat, że wykonano OK.

    Wykonuje Read device (z ikonki) i otrzymuje komunikat o treści:
    "Bad device, select the correct type"

    Próba zaś odczytania pamięci flash lub eeprom z mikroprocesera kończy się komunikatem błędu o treści:
    "Unable to ptobe, bad device or device locked"

    Wszystko więc wskazuje na to, że nie widzi mi procka.

    Wziałem więc kolejny program o nazwie ISP Programmer, jedyne co zmieniałem w jego ustawieniach to wymusiłem typ mikroPC na AT90S8535 (bo wcześniej zachowywał sie jak dwa programy opisane powyżej: nie znajdował typu procesora).
    Wybieram Read signature i program odczytuje poprawnie typ mikro PC oraz odpowiednie wielkości pamięci Flash i EEprom. Niby wszystko ok.
    Wykonuje Read flash i pasek postępu pokazuje, że coś niby czyta. Podobnie po wykonaniu funkcji Read EEprom. Problem w tym, że program nie zwraca kompletnie żadnych komunikatów i wygląda jak by wszystko było ok. Tyle tylko, że gdy zaglądam do zapisanych plików na dysku to wychodzi, że zarówno Flash jak EEPROM jest pusta (tylko wartości 0xFF) co oczywiście nie jest prawdą, gdyż w zestawie AVT po mikroPC jest zaprogramowany programikiem odmierzającym czas i alarmem itp.

    Nadmieniam, że w żadnych z w/w programów nie dotykałem się żadnych ustawień bitów sterujących, blokujących itp. Wszędzie próbowałem jedynie zgodnie z wytycznymi jakie można znaleźć w internecie jedynie odczytać to co obecnie jest w procku w pamięciach.

    Wychodzi mi, że zarówno ten programator wykonany z gotowego zestawu z AVT jak i ten kupiony na allegro zachowują się dokładnie tak samo (otrzymuje dokładnie takie same komunikaty), więc problem raczej nie leży w nich.

    Dlatego mam WIELKĄ PROŚBĘ do kogoś kto już przechodził. Co tak naprawdę mam zrobić. Jak sprawdzić czy procesor jest ok (czy nie jest np. w jakiś sposób zablokowany itp). Proszę o opis krok po kroku jak czterolatkowi co można po kolei i jak sprawdzić tak żebym nie miał możliwości interpretacji czy to tak czy inaczej ma być i wjakim programie.
  • #911
    LED5W
    Poziom 33  
    pr2003 napisał:
    wymusiłem typ mikroPC na AT90S8535 [...] Wybieram Read signature i program odczytuje poprawnie typ mikro PC oraz odpowiednie wielkości pamięci Flash i EEprom.

    Myślę, że odczytuje to z programu a nie procka.

    Wygląda na to, że masz coś nie tak z tym PECEL-em.
    Sprawdź połączenia. Czytałeś to (patrz ramka na samym końcu)?
  • #912
    pr2003
    Poziom 2  
    Dzień dobry ponownie

    Dziękuje za odpowiedź. Oczywiście miałem świadomość o erracie, ale muszę tutaj wyjaśnić, że zanim przystąpiłem do jakiekogolwiek montażu najpierw sprawdziłem czy jest przejście między masą a środkową nóżką stablizatora, oraz pomiędzy masą na złaczu programatora, a masą na płytce układu. Podobnie po wykonaniu montażu sprawdzałem napięcia i na złączu programatora przykładając masę czy to z układu, czy to ze złacza czy też ze stabilizatora otrzymuje wynik poprawny (5.04 V). W związku z tym przyjąłem, że w mojej płytce takiego łatania kabelkiem nie potrzebuje (dokumentacja PECEL'a pochodzi z 2001 roku, ja zakupiłem zestaw teraz w lipcu 2008, a informacja głosi o jednej z serii płytek drukowanych). Oczywiście jeżeli się mylę i istnieje jakikolwiek inny powód dla którego takie połączenie kabelkiem musi być wykonane to je wykonam. Chociaż proszę mnie oświecić po co by to miało być?

    Na chwilę obecną problem dalej aktualny.
    Pozdrawiam
  • #913
    lukaszzk
    Poziom 13  
    Witam kolegów

    Chciałbym się zwrócić do Was o poradę, otóż rozpoczynam swoją przygodę z uC i na wstępie spotkała mnie niemiła niespodzianka. Chcę sobie zaprogramować atmege8 takim oto kodem:

    Code:

    $regfile = "m8def.dat"

    Config Portd = Output
    Config Portb = Output

    Portd = &B00000000
    Portb = &B11111111

    Do
    Loop
    End


    Przy programowaniu wyskakuje mi następujący komunikat:
    Could not read FLASH input file :|, i niestety programowanie nie daje żadnych efektów;

    Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)

    Dodam jeszcze że używam najnowszej wersji bascoma, pakietu AVR Studio z którego wykorzystuje program STK500 oraz programatora na USB, instalacja programatora jest raczej poprawna reinstalowałem wszystkie składniki ale bez efektu, zasilanie uC idzie z programatora, odczyt sygnatur działa.

    Prosił bym kolegów o pomoc w rozwiązaniu tego problemu.
  • #915
    lukaszzk
    Poziom 13  
    Tak (F7 w Bascomie, przy kompilacji 0 błędów)
  • #916
    LED5W
    Poziom 33  
    A plik .bin jest?
    Jeżeli tak to spróbuj przez Manual Program (Load file into buffer).
  • #917
    KaW
    Poziom 34  
    Mysle ,że dla tych co chca zobaczyć mikroprocesor w akcji sa
    najlepsze SYMULATORY.Chciałbym pokazać stronkę :
    http://www.oshonsoft.com/ .Tu jest wybór i mozna sobie popatrzeć - również zastanowic się jaki MIKROPROCESOR wybrać.

    Myśle ,że w ten sposób też można się zacząc uczyć .
  • #918
    lukaszzk
    Poziom 13  
    Dzięki za rady. Problem tkwił w programie który ładował plik hex do flash'u. W moim przypadku używałem stk500 z pakietu AVR Studio, zastąpiłem go avrdude i wszystko ładnie działa.
    Jednak zastanawia mnie czemu ten stk500 nie działa tylko wywala błąd, reinstalacja nic nie daje, ale najważniejsze ze już mogę programować.
  • #919
    Citek
    Poziom 22  
    Mam takie podstawowe pytanie, jak konfigurować/ustawiać w AVR Studio porty bitowo.
    Wiem jak to zrobić w hex-ach np.
    PORTB = 0xA1;
    wiem także jak to zapisać za pomocą np sbi
    sbi (PORTB, 2); - tylko z tego co wyczytałem lepiej z sbi i już nie korzystać ponieważ jest "wycofywane"
    Ale jakoś nie mogę dojść jak zapisać to bitowo, np żeby PB0 i PB2 był w stanie wysokim. Na pewno będzie to coś takiego 00000101, ale jak dokładnie to już nie wiem. Czekam na podpowiedź
  • #920
    ks_fenix
    Poziom 23  
    W asm to się robi tak :
    ldi R16, 0b10101010
    out PORTB, R16
    W c dopiero się uczę, więc nie wiem. Bardzo łatwo przerobić sobie bitowe na hexy jak i odwrotnie więc może tego spróbuj
    Żeby ustawić wszystko w wysoki to dajemy: 0b11111111 lub 0xff
    Tu masz jak przeliczać: http://www.programuj.com/artykuly/rozne/sysliczb.php
  • #921
    Freddie Chopin
    Specjalista - Mikrokontrolery
    omg... po co udzielac porady, skoro nie wiesz jak to zrobic...

    (1<<7) - bit siodmy (liczac od zera) = 0x80 = 0b10000000

    (1<<4) - bit czwarty = 0x10 = 0x00010000

    ustawienie jednego bitu:

    PORTx |= (1<<y);

    skasowanie:

    ... &=~ ...

    odwrocenie stanu

    ... ^= ...

    takie rzeczy sa w kazdym kursie podstaw C i podstaw mikrokontrolerow...

    4\/3!!
  • #922
    Citek
    Poziom 22  
    Ok, dzięki, teraz już wszystko jasne

    Dodano po 4 [minuty]:

    A jak chciałbym ustawić według metody Freddie Chopin-a trzy porty w stanie zerowym, to jak to zapisać?
  • #923
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #924
    heynow
    Poziom 19  
    Witam
    Jestem mocno początkujący w programowaniu ATmeg w C. Samo C miałem na uczelni. Chciałbym zeskanować cały port i wartości binarne wstawić do tablicy 8-elementowej. Nie bardzo wiem jak.
    Code:

    #include <avr/io.h>
    #include <inttypes.h>

    void main()
    {
    DDRA = 0x00;

    uint8_t i;
    uint8_t temp;

    for(i=0; i<8; ++i)
          {
             //z tym mam problem
          }
    }
  • #925
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #926
    Estarriol
    Poziom 15  
    @skalsiu88: Dzięki, bo chyba mi się przyda, zwłaszcza że nastawiony jestem na avr-gcc i chce zacząć kombinować z uC...

    I mam jeszcze pytanie - na poczatek chcę zrobić programator. Tzn pod lpt, zaprogramowac atmega8 i na nim zrobić usbasp. W związku z tym mam pytanie - kupiłem przy okazji ATmega8, tyle że ten który może max pracować 8Mhz, a na schemacie http://www.fischl.de/usbasp/ jest kwarc 12Mhz. Czy muszę dać inny/dużo będzie zmian?

    Pozdrawiam
  • #927
    chopinos
    Poziom 9  
    Wpadl mi ostatnio w rece programator ISP AVR - USB RoHS ATMEL FV Link

    Jako ze nigdy wczesniej nie mailem do czynienia z uC to nie mam pojecia co moge z nim zrobic, a skoro go mam to moze sie czegos naucze. Z tego co szukalem w necie to jest duzo kursow ale wszystkie dotycza RS232 albo LPT a nie USB. Czy jest jakas roznica przy programowaniu, przesylaniu programow? Czy programy do kursow dotyczacych programowania przy uzyciu RS232, LPT beda dzialac z tym programatorem? Jesli bede chcial sterowac np. dioda to program, podleczenie diody do uC bedzie takie samo?
    Sory za takie banalne pytania ale jeszcze nigdy sie za to nie bralem.
  • #928
    nemo1802
    Poziom 10  
    Dopiero zaczynam swoją przygodę z uC i mam problem...

    Posiadam programator ZL2PRG oraz płytkę testową ZL3AVR z Atmega32. Podczas wysyłania przez PonyProg jakiegokolwiek pliku wynikowego do uC wyskakuje mi błąd "Device missing or unknown device (-24)". Próba komunikacji podczas konfiguracji w zakładce "Interface board setup" wychodzi pozytywnie, również kalibracja odbywa się bez jakichkolwiek problemów. Co może być powodem problemu z wysłaniem??

    System operacyjny komputera z którego wysyłany jest program to Win 98.
  • #929
    Andreus30
    Poziom 15  
    Witam
    Szanowni koledzy, od jakiegos czasu zbieram informacje na temat I2C i wciaz nic nie rozumiem. Jestem calkiem zielony w tym temacie i prosze o pomoc. W moim przypadku chcialbym zrobic odtwarzacz CD. Niestety przetworniki ADC, CODEC i inne wymagaja tego typu komunikacji. Chcialbym sie dowiedziec czy istnieje jakis Kit ktory mozna podlaczyc do komputera zeby zaprogramowac procesor sterujacy CD. Jaki procesor mozna by uzyc i jak go zaprogramowac zeby obslugiwal panel z funkcjami i jakis wyswietlacz. Mysle ze do tego to jeszcze daleka droga i chcialbym zaczac od czegos prostszego na przyklad taki TC9274N, co zrobic zeby przy pomocy zewnetrznych przelacznikow sterowac tym ukladem. Idealem byloby zrobienie plytki o w miare wszechstronnym zastosowaniu ktora moglbym programowac w miare potrzeb.
    Bede bardzo wdzieczny za pomoc.
  • #930
    _Robak_
    Poziom 33  
    Odpowiedajac na temat posta, nie musisz budowac mikrokontrolera do I2C, wystarczy kupic :) AVR czy PICki maja takie moduly wbudowane, tylko moga sie inaczej nazywac np. Two Wire Interface