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.

Zmiana kodu z Atmega16 na Atmega8

mati852.5 14 Maj 2017 16:08 1389 27
  • #1 14 Maj 2017 16:08
    mati852.5
    Poziom 7  

    Witam, chciałbym przerobić zegarek z tego projektu http://www.avr-tutorials.com/projects/atmega16-based-digital-clock na Atmega8. Chciałbym również usunąć odliczanie sekund ponieważ dysponuję tylko wyświetlaczem czterocyfrowym. Po skromnych przeróbkach mój kod wygląda tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zostawiłem PORTB jako sterujący sygnałami a PORTC załączający anodę, ale chciałbym również żeby ustawianie godzin i minut było na porcie D. Proszę o podpowiedzi :)

    0 27
  • #2 14 Maj 2017 16:27
    excray
    Poziom 39  

    Iiii....? Ten kod który zaprezentowałeś nie działa, czy jak?

    0
  • #4 14 Maj 2017 16:41
    mati852.5
    Poziom 7  

    Kod działa, tzn kompiluje się ale nie wiem jak go podłączyć pod Atmega8 bo ma mniej wyjść i po podłączeniu świeci tylko jedna cyfra na wyświetlaczu. Dzięki za schemat i kod, testowałem ale nie mam takiego kwarcu a zależy mi żeby dziś uruchomić układ :)

    1
  • #5 14 Maj 2017 16:51
    excray
    Poziom 39  

    To przenieś sobie segmenty na PD0-6, katody na PC0-3, a przyciski gdziekolwiek.

    0
  • #6 14 Maj 2017 16:54
    mati852.5
    Poziom 7  

    No dobra, to w takim razie jak ustawić ten fragment?:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    bo przy obecnych ustawieniach wyświetla tylko jedną cyfrę zamiast czterech.

    0
  • #7 14 Maj 2017 16:56
    excray
    Poziom 39  

    A jaki masz wyświetlacz? Wspólna anoda czy katoda?

    0
  • #8 14 Maj 2017 16:56
    mati852.5
    Poziom 7  

    wspólna anoda

    0
  • #9 14 Maj 2017 16:57
    excray
    Poziom 39  

    A widzisz. A autor miał wspólną katodę. Z tej części kodu wywal wszystkie tyldy: ~

    0
  • #10 14 Maj 2017 17:06
    mati852.5
    Poziom 7  

    I to wszystko, nie zmieniać wartości po tyldzie? Bo jak usunąłem wyświetlanie sekund to się przesuną te wartości? Czy źle rozumiem?

    0
  • #11 14 Maj 2017 17:14
    excray
    Poziom 39  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    I anody podpinasz pod Px0, Px1, Px2 i Px3.

    0
  • #12 14 Maj 2017 17:18
    mati852.5
    Poziom 7  

    Wyświetla ale te same cyfry na wyświetlaczu.

    0
  • #13 14 Maj 2017 17:21
    excray
    Poziom 39  

    Pokaż zdjęcie połączeń. I wrzuć swój kod po wszystkich modyfikacjach.

    0
  • #14 14 Maj 2017 17:37
    mati852.5
    Poziom 7  

    Kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zmiana kodu z Atmega16 na Atmega8

    Dodano po 39 [sekundy]:

    Przepraszam, że nie w programie, nie mam, a chciałem możliwie jak najszybciej.

    0
  • #15 14 Maj 2017 17:49
    excray
    Poziom 39  

    Ale miałeś dać zdjęcie połączeń, a nie schemat. Dobrej jakości i z kilku perspektyw.

    0
  • #16 14 Maj 2017 17:58
    mati852.5
    Poziom 7  

    Zmiana kodu z Atmega16 na Atmega8 Zmiana kodu z Atmega16 na Atmega8 Zmiana kodu z Atmega16 na Atmega8
    Nie wiem czy to coś da, początek przygody z AVR i jak na razie bawię się na zwykłej płytce.

    0
  • #17 14 Maj 2017 18:01
    excray
    Poziom 39  

    Co to za wyświetlacz? Oznaczenie producenta?

    0
  • #18 14 Maj 2017 18:03
    mati852.5
    Poziom 7  

    FJ-5461BH wspólna andoa

    0
  • Pomocny post
    #19 14 Maj 2017 18:10
    excray
    Poziom 39  

    To coś namieszałeś w połączeniach. Nijak się one mają do twojego schematu. Rozbierz wszystko i złóż jeszcze raz.

    0
  • #20 14 Maj 2017 18:14
    mati852.5
    Poziom 7  

    OK, w takim razie mam jeszcze jedno pytanie, jeśli Atmega16 była taktowana 4MHz to muszę przestawić na Fusebitach Atmega8? czy wystarczy #define F_CPU?

    0
  • #21 14 Maj 2017 18:23
    excray
    Poziom 39  

    Tak powinno to być podpięte:
    Zmiana kodu z Atmega16 na Atmega8

    Dodano po 3 [minuty]:

    mati852.5 napisał:
    OK, w takim razie mam jeszcze jedno pytanie, jeśli Atmega16 była taktowana 4MHz to muszę przestawić na Fusebitach Atmega8? czy wystarczy #define F_CPU?

    Wszystko. Ustaw F_CPU=4000000UL, poza tym ustaw w fusebitach pracę z kwarcem < 8MHz i zaopatrz układ w kwarc 4MHz. Inaczej to nie będzie zegarek tylko jakaś parodia rozjeżdżająca się po kilka-naście minut na godzinę. W tym celu oczywiście musisz zostawić PB6 i PB7 nie używane, czyli sterowanie segmentami przenieść na inny port. Np. na PD.

    0
  • #22 14 Maj 2017 18:29
    mati852.5
    Poziom 7  

    Dobra, dzięki wielkie za pomoc :)

    0
  • #23 14 Maj 2017 18:32
    excray
    Poziom 39  

    A najlepiej to poszukaj innego kodu ponieważ ten to programistyczna porażka.

    0
  • #24 14 Maj 2017 18:39
    mati852.5
    Poziom 7  

    Może skorzystam z tego który wcześniej podał marekhab. Dzięki raz jeszcze.

    0
  • #26 14 Maj 2017 18:41
    mati852.5
    Poziom 7  

    Tak wiem, tylko chciałem się obyć bez kwarcu, ale widzę że to nie przejdzie na samych przerwaniach.

    0
  • #27 14 Maj 2017 19:00
    excray
    Poziom 39  

    Oczywiście, że przejdzie na samych przerwaniach. Tyle że po pierwsze co mają przerwania do stabilności i precyzji wbudowanego oscylatora RC. A po drugie wybrany przez Cieie program, wybitnie mało z tych przerwań korzysta.

    0
  Szukaj w 5mln produktów