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.

Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

ziguś 09 Sty 2014 23:06 2856 15
  • #1 09 Sty 2014 23:06
    ziguś
    Poziom 23  

    Witam
    Piszę program w Bascomie na Atmega32 do sterowania ogrzewaniem w warsztacie i mam problem. Jest zegar RTC, zewnętrzny Ram, Timer, Menu i to wszystko działa bez zarzutu - dokładnie tak jak bym chciał. Chciałem dołożyć czujnik temperatury i wykorzystać do tego celu wejście ADC. Problem pojawia się w momencie jak w podmenu "Start_webasto" dodaję linijkę U_wy = Fusing(v , "#.&"). Atmega zaraz po starcie powinna wyświetlić zegar, a pokazuje cały wyświetlacz czarnych kwadracików. Kompilator nie wywala żadnego błędu. Bez tej linijki wszystko działa. Co z nią jest nie tak ? Straciłem na to pół dnia i nic.
    Ustawienia fusebitów lFuse = 0xFF hFuse=0xD9

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 15
  • #2 10 Sty 2014 00:41
    Mateusz@
    Poziom 17  

    Może spróbuj wydłużyć stringa U_wy. Chyba że nie oczekujesz wartości powyżej 9.9.

    0
  • #3 10 Sty 2014 05:48
    ziguś
    Poziom 23  

    Próbowałem i nic to nie daje.Ale zastanawia mnie to, że po dodaniu linijki w podprogramie atmega nawet nie startuje. Gdyby się to działo w momencie jak wchodzę w podprogram to jeszcze bym to zrozumiał, ale ona nawet nie dochodzi do tego miejsca

    0
  • #4 10 Sty 2014 07:23
    sp3ots
    Poziom 36  

    Witam !
    Czy linie:
    Config Scl = Portc.0
    Config Sda = Portc.1
    masz "podciągnięte" do plusa zasilania rezystorami ?, jeśli nie to zrób to, daj dwa rezystory 4,7k.
    Pozdrawiam. Stefan

    0
  • #5 10 Sty 2014 07:38
    ziguś
    Poziom 23  

    Tak, są podciągnięte.
    Problem się robi po dodaniu tej jednej linijki. Wydaje mi się że to będzie problem ze zmiennymi.

    Dodano po 10 [minuty]:

    Wystarczy że np. usunę całe menu ustawiania zegara i wtedy adc wyświetla - ale przecież jakoś ten zegar muszę ustawiać.
    Podobnie ma się sytuacja jak zostawię ustawianie zegara a usunę linijki odpowiadające za wpis do pamięci zewnętrznej. Na jednej lini SCL i SDA wiszą mi 2 układy PCF8583 i pamięć 24C02. Czy musi być gdzieś podane co jest master a co slave ?

    0
  • #6 10 Sty 2014 12:19
    sp3ots
    Poziom 36  

    Na porcie C jest Jtag, wyłączyłeś go ?

    0
  • #7 10 Sty 2014 12:34
    ziguś
    Poziom 23  

    Tak, na 100% ( zerknij na fusebity ). Tak jak napisałem wcześniej dodanie zewnętrznego epromu 24c02 robi problem - pamięci podmieniałem i dalej to samo

    Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

    Dodano po 5 [minuty]:

    może źle zainicjowałem I²C ? ale przecież PCF8583 chodzi, a adresy zapisu i odczytu z epromu są wg. mnie dobrze

    0
  • #8 10 Sty 2014 12:38
    sp3ots
    Poziom 36  

    ziguś napisał:
    Tak, na 100% ( zerknij na fusebity ). Tak jak napisałem wcześniej dodanie zewnętrznego epromu 24c02 robi problem - pamięci podmieniałem i dalej to samo

    Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

    Dodano po 5 [minuty]:

    może źle zainicjowałem I²C

    Nie znam tego.
    ATmega32 fabrycznie nowy ma włączony Jtag, ustaw stan fuse bita na przeciwny od ustawienia fabrycznego.

    0
  • #10 10 Sty 2014 13:48
    yokoon
    Poziom 28  

    Witam.

    Po wgraniu programu do Bascoma i przeglądając go zauważyłem błędy:

    Config Pinc.0 = Input powinno być Config Portc.0 = Input
    I pozostałe Configi.
    Pinc.0 stosujemy przy odczycie danego pinu np. If pinc.0 = 0 then ........

    Następnie linia nr 213 przed (Wyświetl zegar:) zawiera instrukcję Return ale ta część programu nie zawiera żadnego podprogramu, powinno być zwykłe END.

    Chyba, że źle przeglądałem.

    A może tak sformatuj:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #11 10 Sty 2014 14:21
    Wojtek75
    Poziom 23  

    yokoon napisał:
    Po wgraniu programu do Bascoma i przeglądając go zauważyłem błędy:

    Config Pinc.0 = Input powinno być Config Portc.0 = Input
    I pozostałe Configi.
    Pinc.0 stosujemy przy odczycie danego pinu np. If pinc.0 = 0 then ........

    Zobacz co na to bascomowy help:
    Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

    Niech autor spróbuje zwiększyć rozmiary stosu. Ale to raczej tylko obchodzenie problemu niż jego rozwiązanie. Tak napisany program prędzej czy później zacznie sprawiać problemy. Radzę się autorowi zastanowić nad tym jak zdecydowanie uprościć i zoptymalizować ten kod.

    0
  • #12 10 Sty 2014 14:49
    ziguś
    Poziom 23  

    Nawet kopiując podprogramy jeden do drugiego tak że soft zajmuje 98 % pamięci wszystko działa. Problem jest jak dopiszę obsugę zewnętrznego epromu - mysle że tutaj jest problem - możecie na to zerknąć ? Problemy z config pin/port już przerabiałem. Jak wyjście ->config port jak wejście > config pin.

    0
  • #13 10 Sty 2014 14:52
    Mateusz@
    Poziom 17  

    Kolego a dlaczego nie korzystasz z wewnętrznej pamięci EEPROM?

    0
  • #14 10 Sty 2014 15:04
    ziguś
    Poziom 23  

    Proszę źle nie odebrać mojej odpowiedzi ale wolałbym ( chciałbym ) zewnętrzną

    0
  • #15 10 Sty 2014 15:14
    Mateusz@
    Poziom 17  

    Jak tam chcesz ale dla mnie to jak jazda pustym samochodem ciężarowym z załadowaną przyczepą. Próbowałeś zwiększać stosy?

    0
  • #16 10 Sty 2014 15:16
    ziguś
    Poziom 23  

    Straciłem 2 dni przez niedopatrzenie. Problem się rozwiązał, wszystko śmiga aż miło. Wstyd się przyznać ale sam zrobiłem błąd. Plik wgrywałem programem Avrdude gui v0.2.0 i na samej górze w okienku -p Device: cały czas było zaznaczone Atmega8, a powinno być .... :D Atmega32. Zmieniłem i wszystko działa :angel:
    BARDZO WSZYSTKIM DZIĘKUJĘ ZA POMOC i przepraszam że musieliście się głowić nad czymś co powinienem od razu zauważyć.

    Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

    0