Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 3 lut 2026, o 11:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 16 sie 2015, o 20:26 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Witam,
mam pewien problem, po przeczytaniu rozdziału BlueBooka o multipleksowaniu wziąłem się za pisanie programu. Wszystko jest prawie ok. No właśnie prawie Pani Mirek omówił to na Atmega 32, ja posiadam 644p. Po kompilacji wyrzuca błąd procedury przerwania ISR(TIMER0_COMP_vect). Wiem ze ten temat był już na forum i tam znalazłem informacje ze atmega 644p na timerze0 ma 2 kanały, a wiec to COMP dopisałem A. Po kompilacji w konsoli jest wszystko ok po wgraniu na procka program nie działa. Wiem ze nie powinienem tego robić ale po wejściu do problems wyskakuje nadal blad z tą procedurą. I tu pytanie co jest nie tak ? Dodatkowo powiem że w linijkach programu nic się nie podświetla. Szukałem również wektorów przerwań w pliku atmegi 64 (bo w 644p nie ma) i wszystko jest ok.

Z góry dziękuje za odpowiedz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 20:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

tomek.m napisał(a):
Szukałem również wektorów przerwań w pliku atmegi 64 (bo w 644p nie ma)


A zobacz na stronie 61 w datasheet.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 20:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

tomek.m napisał(a):
Wiem ze nie powinienem tego robić ale po wejściu do problems wyskakuje nadal blad z tą procedurą. I tu pytanie co jest nie tak ?

No i widzisz - wiesz - a jednak wchodzisz w kocią zakładkę PROBLEMS, i nie możesz rozwiązać problemu ... a po co ?

Co ja wszędzie mówię ? ZAKŁADKA - "C O N S O L E" ... rozumiesz ? tam masz opisane prawidłowo błędy kompilatora i z nich już można coś wywnioskować a nie z kociej zakładki problems

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 20:53 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Doskonale o tym wiem ale w konsoli kompilacja przechodzi bez żadnych błędów i do procka program tez wchodzi bez zająkniecia tylko ze nie chce działać

------------------------ [ Dodano po: 3 minutach ]

21:56:21 **** Incremental Build of configuration Release for project multiLED ****
make all
'Invoking: Print Size'
avr-size --format=avr --mcu=atmega644p multiLED.elf
AVR Memory Usage
----------------
Device: atmega644p

Program: 408 bytes (0.6% Full)
(.text + .data + .bootloader)

Data: 6 bytes (0.1% Full)
(.data + .bss + .noinit)


'Finished building: sizedummy'
' '

21:56:21 Build Finished (took 384ms)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

No tak, ale dalej masz warningi (ostrzeżenia) prawda? Dlatego nie działa.
Czy zmieniłeś już nazwę prcedury obsługi przerwania?
Czy pozbyłeś się warningów w funkcji: void d_led_init(void)?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:05 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Tak wszystko jest ok , poza ta procedura ISR



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dodam, że warningi znikają, gdy jeszcze raz póścisz kompilację.
Dlatego zrób Clean Project (klikasz prawym przyciskiem myszy na nazwie projektu) i wtedy zobacz czy nie ma warnigów.

------------------------ [ Dodano po: kilkunastu sekundach ]

Cytuj:
Tak wszystko jest ok , poza ta procedura ISR

A otworzyłeś datasheet'a na stronie 61?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:07 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:12 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

tomek.m napisał(a):
ale w konsoli kompilacja przechodzi bez żadnych błędów i

NIEMOŻLIWE ....

Chyba że sobie radośnie klikasz drugi raz kompilację gdy wyświetlą się warningi - wtedy mówisz kompilatorowi żeby się zamknął i nie pokazywał warningów. Zrozum to.

Jak chcesz znowu zobaczyć warningi to robisz CLEAN PROJECT i wtedy JEDEN RAZ build i już masz warningi - i tam zaglądaj

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:41 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Po cleanowaniu :

22:40:14 **** Build of configuration Release for project multiLED ****
make all
'Building file: ../d_led.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega644p -DF_CPU=11059200UL -MMD -MP -MF"d_led.d" -MT"d_led.d" -c -o "d_led.o" "../d_led.c"
'Finished building: ../d_led.c'
' '
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega644p -DF_CPU=11059200UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
'Finished building: ../main.c'
' '
'Building target: multiLED.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,multiLED.map -mmcu=atmega644p -o "multiLED.elf" ./d_led.o ./main.o
'Finished building target: multiLED.elf'
' '
'Invoking: AVR Create Extended Listing'
avr-objdump -h -S multiLED.elf >"multiLED.lss"
'Finished building: multiLED.lss'
' '
'Create Flash image (ihex format)'
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex multiLED.elf "multiLED.hex"
'Finished building: multiLED.hex'
' '
'Create eeprom image (ihex format)'
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex multiLED.elf "multiLED.eep"
'Finished building: multiLED.eep'
' '
'Invoking: Print Size'
avr-size --format=avr --mcu=atmega644p multiLED.elf
AVR Memory Usage
----------------
Device: atmega644p

Program: 408 bytes (0.6% Full)
(.text + .data + .bootloader)

Data: 6 bytes (0.1% Full)
(.data + .bss + .noinit)


'Finished building: sizedummy'
' '

22:40:16 Build Finished (took 2s.392ms)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

No teraz to tak. A skąd wziąłeś OCROA = 215?
Skoro preskaler masz ustawiony na 1024?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:46 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Bo mam procek taktowany 11,0592 MHz a nie 8MHz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Używasz może AVR Timer Calc z programu mkAVRCalculator?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:47 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

AAA dobra preskaler powinien byc na 256 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:50 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

No dokładnie - teraz kod wygląda w porządku - to skoro nie ma warningów w oknie CONSOLE to znaczy, że kompilacja przebiegła poprawnie ...

Więc skoro nie działa to znaczy - że jakieś drastyczne błędy są w kodzie ale nie syntaktyczne ... czyli np nie odpalasz przerwań globalnych itp itd - tego kompilator ci nie wykryje ...

Więc jeśli nadal ci nie działa to pokaż jednak może po pierwsze swój plik main.c

oraz plik d_led.c

popraw też oczywiście OCR0A jak mówi wyżej kolega

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Albo OCR0A = 53, prawda?

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:51 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

tomek.m napisał(a):
AAA dobra preskaler powinien byc na 256 :)

no to jak ? ruszyło ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 21:51 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Po przestawieniu preskalera na 256 tez nie dziala



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 22:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Proponuję Ci skompilować projekt 03_MultiLed z płyty z książki, oczywiście dokonać zmian dotyczących ATmega644p (nazwy rejestrów i taktowanie) i zobaczyć czy ruszy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 22:09 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

No projekt pana Mirka działa :)

------------------------ [ Dodano po: 1 minucie ]

Ale nadal nie rozumiem dlaczego mój nie

------------------------ [ Dodano po: 3 minutach ]

No cóż pomęczę się jeszcze jutro, dzięki za pomoc. I za ten programik do timerów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 sie 2015, o 22:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27449
Lokalizacja: Szczecin
Pomógł: 1045

to tak jak pisałem wcześniej - wklej swój przerobiony kod plików d_led.c i main.c

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2015, o 21:22 
Offline
Nowy

Dołączył(a): 02 sie 2015
Posty: 10
Pomógł: 0

Ufff już działa, mały błąd w pliku d_led.h nie napisalem definicji maski anody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO