logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bascom Atmega32 - Czarne kostki na wyświetlaczu Atmega Bascom

ziguś 09 Sty 2014 23:06 3438 15
  • #1 13159011
    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: text
    Zaloguj się, aby zobaczyć kod
  • #2 13159307
    Mateusz@
    Poziom 18  
    Może spróbuj wydłużyć stringa U_wy. Chyba że nie oczekujesz wartości powyżej 9.9.
  • #3 13159411
    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
  • #4 13159458
    sp3ots
    Poziom 38  
    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
  • #5 13159717
    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 ?
  • #6 13160120
    sp3ots
    Poziom 38  
    Na porcie C jest Jtag, wyłączyłeś go ?
  • #7 13160145
    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
  • #8 13160170
    sp3ots
    Poziom 38  
    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.
  • #10 13160338
    yokoon
    Poziom 29  
    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: text
    Zaloguj się, aby zobaczyć kod
  • #11 13160437
    Wojtek75
    Poziom 24  
    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.
  • #12 13160506
    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.
  • #13 13160517
    Mateusz@
    Poziom 18  
    Kolego a dlaczego nie korzystasz z wewnętrznej pamięci EEPROM?
  • #14 13160554
    ziguś
    Poziom 23  
    Proszę źle nie odebrać mojej odpowiedzi ale wolałbym ( chciałbym ) zewnętrzną
  • #15 13160590
    Mateusz@
    Poziom 18  
    Jak tam chcesz ale dla mnie to jak jazda pustym samochodem ciężarowym z załadowaną przyczepą. Próbowałeś zwiększać stosy?
  • #16 13160596
    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
REKLAMA