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

Fuse bity atmega32 - uruchomienie na wew oscylatorze -pomocy

Wuja665 07 Mar 2007 23:27 2089 12
REKLAMA
  • #1 3655302
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    Witam

    Mam atmege32 i wyswietlacz podlaczony do niej pod portc.0-portc.5. moje pytanie to jak ustawic fuse bity by uruchomic atmege na wew. oscylatorze? Po wgraniu programu bascomemAVR niema zadnej reakcji - wyswietlacz bez zmian... Tak jakby zegar stal. Dodam, ze pierwszy raz probuje uruchomic nowy uklad poniewaz dopiero zaczynam zabawe w mikroprocesory. Prosze o pomoc. ps. program pisze w bascomie.

    pozdrawiam,
    Wuja
  • REKLAMA
  • #2 3655379
    Adamelek
    Poziom 14  
    Posty: 79
    Pomógł: 7
    Ocena: 1
    Domyślnie fuse bity powinny być ustawione tak, aby ATmega ruszyła na wewnętrznym oscylatorze. Na pewno tak jest w ATmedze8, podejrzewam, że w Atmedze32 również.
  • #3 3655416
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    hmm no niewiem, w sumie też mi się tak zdaje, ale zastanawia mnie fakt że nawet najprostrzy program wyświetlający tekst na wyświetlaczu się nie uruchamia, tzn nic na wyswietlaczu sie nie pojawia :/ o fusebitach pisze w nocie katalogowej, ale zbytnio nierozumiem bo to po angielsku :/

    Programem ponyprog dobrałem sie do fuse bitów. Z tego co wyczytałem to na wew osc ustawienie CKSEL3-CKSEL0 powinno byc nastepujące - 0001 dla f=1MHz, zaś po odczytaniu mam 1110. Przy próbie zapisu wartości 0001 nie wywala błędy, jednak nastepnie po ponownym odczytaniu fusebitów znow widnieje watość 1110. ręce opadają. co robić?
  • REKLAMA
  • #4 3655455
    Adamelek
    Poziom 14  
    Posty: 79
    Pomógł: 7
    Ocena: 1
    Opisz dokładnie i szczegółowo który sygnał wyświetlacza podpinasz do którego pinu którego portu. Potem wklej program, którym chcesz coś uruchomić. Bez tego nikt nie będzie wiedział jak Ci pomóc.
  • REKLAMA
  • #5 3655460
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    $regfile = "m32def.dat"
    $crystal = 1000000

    $lib "lcd4.lbx" ' use the alternative library

    Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0

    Config Lcd = 16 * 2

    Cls
    Lcd "test"
    Lowerline
    Lcd "12345678"
    End

    Myśle ze to wystarczy w programie jest rozpisane który pin gdzie jest podłączony.
  • #6 3655607
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Na porcie C jest domyślnie włączony interfejs JTAG (portc.2 do portc.5) dlatego układ nie działa poprawnie.
    Wyłącz w Fuse Bitach Jtag i po sprawie.
    PS.
    Korzystaj z Wyszukiwarki, wtedy dowiedziałbyś się że Pony domyślnie pokazuje zanegowaną postać bitów konfiguracyjnych, oraz że istnieje coś takiego jak Jtag.

    https://www.elektroda.pl/rtvforum/topic560687.html
    https://www.elektroda.pl/rtvforum/topic667645.html
  • #7 3655845
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    Mój błąd - nie napisałem wcześniej, że wyłączyłem obsługe jtaga :/ Po wyłaczeniu obsługi jtaga dalej pustka na wyświetlaczu :/
  • #8 3656032
    _Robak_
    Poziom 33  
    Posty: 2209
    Pomógł: 231
    Ocena: 29
    Tak dla pewnosci... jesli fuse JTAGEN jest na 1 oznacza ze jest wylaczony JTAG...
  • REKLAMA
  • #9 3656053
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    W BASCOM-AVR w zakładce Lock and Fuse Bits programatora mam ustawiony Fusebit H na 1:JTAG disabled.
  • #10 3657075
    Adamelek
    Poziom 14  
    Posty: 79
    Pomógł: 7
    Ocena: 1
    A zasilanie i kontrast podłączyłeś to tego LCD? Jeśli pin od kontrastu pozostawisz niepodłączony to najprawdopodobniej nigdy nic nie zobaczysz. Może wszystko się wyświetla, tylko tego nie widać.
  • #11 3657595
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Panowie , tu nie ma co "gdybać" , tylko zajrzeć do pliku lcd4.lib (jeśli ktoś nie posiada , czytać dalej :) ) , gdzie stoi jak byk:
    
    ;Rs = PortB.0
    ;RW = PortB.1        we dont use the R/W option of the LCD in this version so connect to ground
    ; E = PortB.2
    ;E2 = PortB.3        optional for lcd with 2 chips
    ;Db4 = PortB.4       the data bits must be in a nibble to save code
    ;Db5 = PortB.5
    ;Db6 = PortB.6
    ;Db7 = PortB.7
    ;This routine is called when the LCD must be initialized
    
    [_Init_LCD]
    .EQU LCDDDR=$17       ; change to another address for DDRD ($11)
    .EQU LCDPORT=$18      ; change to another address for PORTD ($12)
    
    _Init_LCD:
     *BASIC: waitms 10
    ;....
    

    Bez zmiany adresu dla stałych LCDDDR i LCPORT ( by wskazywał na DDRC- $14 i PORTC- $15) , o ujrzeniu czegokolwiek na LCD , możemy tylko pomarzyć :D Po wtóre , linie DB4-DB7 MUSZĄ być na starszym nible'u , czyli podpięte pod PINx.5-PINx.7 , a sygnał RS na PINx.0 i E na PINx.2 itd., itp.Jedyne co możemy zmienić w *.lbx , to port - ewentualnie poprawić całą bibliotekę ;)
    Reasumując:
    LCD na PORTC

    DB4-DB7 -> PINC.4-PINC.7
    RS -> PINC.0
    RW -> GND
    E -> PINC.2
    i w bibliotece
    .EQU LCDDDR=$14 ;DDRC
    .EQU LCDPORT=$15 ;PORTC

    Uff.... :D

    Piotrek

    PS
    Przy korzystaniu z lcd4.lbx , dyrektywa Config Lcd=Pin ... nie jest wogóle potrzebna - wywalić.
  • #12 3657691
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Albo "odznaczyć" linijkę z tą biblioteką. ;)
  • #13 3663730
    Wuja665
    Poziom 13  
    Posty: 148
    Ocena: 6
    Po odznaczeniu linijki z biblioteką dalej nie widać efektu.

    Dodano po 1 [godziny] 35 [minuty]:

    Problem rozwiązany - omyłkowo zastosowałem niewłaściwy stabilizator napięcia w układzie. Zamiast 5V było 3.3V... Jak widać czeski błąd. Temat zamykam.

    Pozdrawiam,
    Wuja

Podsumowanie tematu

✨ Problem dotyczył uruchomienia mikrokontrolera ATmega32 na wewnętrznym oscylatorze oraz poprawnego działania wyświetlacza podłączonego do portu C (piny PC0-PC5). Domyślnie fuse bity powinny umożliwiać pracę na wewnętrznym oscylatorze 1 MHz (CKSEL3-CKSEL0 = 0001), jednak użytkownik miał trudności z ich ustawieniem i odczytem za pomocą programu PonyProg, który pokazuje zanegowaną postać bitów konfiguracyjnych. Dodatkowo port C jest domyślnie używany przez interfejs JTAG (piny PC2-PC5), co może blokować prawidłową pracę wyświetlacza. Po wyłączeniu JTAG w fuse bitach problem z wyświetlaczem nadal występował. Wskazano również, że biblioteka lcd4.lbx w Bascom-AVR domyślnie korzysta z portu B, a nie portu C, co wymaga modyfikacji definicji portów lub zmiany podłączenia wyświetlacza. Ostatecznie problemem okazało się niewłaściwe napięcie zasilania – zamiast 5 V zastosowano 3,3 V, co uniemożliwiało poprawne działanie układu. Po poprawnym zasileniu 5 V mikrokontroler i wyświetlacz działały prawidłowo.
Wygenerowane przez model językowy.
REKLAMA