Skocz do zawartości

Wgranie EEPROM do Attiny2313


Pomocna odpowiedź

Napisano

Mam problem z wgraniem pliku (*EEP) do procka. Korzystam z Avr Studio do wgrywania. Program natomiast kompiluje w BASCOMIE.

Problem podobny do tego :

http://www.elektroda.pl/rtvforum/topic2065810.html

,ale dyskusja tam zamieszczona nie wiele mi pomogła z uwagi na odniesienie do stron w języku angielskim.

Korzystam z kursy Piotra Góreckiego. W programie dane do EEPROMU poprzedzam poleceniem $eeprom. W książce jest napisane ,że należy następnie wgrać plik (*EEP) do EEPROMU. Plik ten staram się wgrać przez AVR studio w wydzielonej części okna o nazwie EEPROM.

Otrzymuje komunikat:

Getting isp parameter.. SD=0x06 .. OKThe specified file is not a valid Intel HEX file

Programator mam ten, który otrzymałem razem z całym kursem. (wersja na USB) - AVTPROG2

W BASCOM-AVR kompiluje program i otrzymuje m.in pliki : HEX i EEP

W AVR-Studio w sekcji FLASH wgrywam plik HEX a w sekcji EEPROM próbuje wgrać plik EEP ale wywala ten błąd.

Czym może być to spowodowane?

Wolałbym jednak obejść ten problem bez instalowania dodatkowych programów (zrozum - programowanie z użyciem 10 aplikacji na raz nie jest wygodne)

Zauważyłem że nie tylko ja mam z tym problem. Dużo ludzi przerabiających ten kurs się również na niego natknęła. Ktoś tam napisał komuś żeby zamienić polecenie $eeprom na $eepromhex ale to z kolei powoduje jakiś dodatkowy błąd w programie. BASCOM - AVR wskazuje mi na linie z poleceniem END. Mozę coś jeszcze trzeba dodać w programie gdy się używa $eepromhex?

[ Dodano: 21-02-2012, 23:12 ]

Proszę o pomoc bo bez tego nie mogę dalej realizować kursu 😕

A po kiego grzyba ci to AVRstudio jeśli programujesz w bascomie? Tak jak K.G., pisze, ściągnij avrdude + jakieś gui i problem z głowy.

Standardowo Bascom kompiluje plik *.eep jako plik binarny - stad mogą pojawiać się problemy. Jeśli chcesz otrzymać w postaci hexodecymalnej musisz wpisać polecenie $eepromhex. Napisz może w którym miejscu wstawiasz to plecenie i wpisz treść błędu.

'C019c 'Wyświetlanie biegnącego napisu z pamięci EEPROM
$eeprom                  'dane do zapisania w EEPROMie maja być na początku pliku
Data 140 , 134 , 136 , 198 , 134 , 255 , 142 , 163 , 175 , 255 , 136 , 199 , 199
Data 255 , 140 , 134 , 192 , 140 , 199 , 134 , 255 , 191 , 136 , 131 , 167 , 198
Data 161 , 134 , 142 , 194 , 137 , 139 , 239 , 251 , 207 , 249 , 241 , 199 , 171
Data 163 , 192 , 140 , 175 , 146 , 135 , 193 , 227 , 255 , 191 , 255 , 161 , 134
Data 146 , 207 , 194 , 171 , 255 , 191 , 255 , 140 , 251 , 163 , 135 , 175 , 255
Data 066 , 255 , 255
$data
'wcześniejsze dane pójdą do EEPROM-a, a odtąd zaczyna się program
Dim R1 As Byte , R2 As Byte , R3 As Byte , R4 As Byte
Dim Licznik As Byte , Mux As Byte ,
Config Portb = 255 : Portb = 255 : Config Portd = &B1111100 : Portd = &B1111111
Config Timer0 = Timer , Prescale = 64 : Config Timer1 = Timer , Prescale = 64
Enable Interrupts : Enable Timer0 : Enable Timer1       'odblokowanie przerwań
On Timer0 Co4ms : On Timer1 Skok       'po przepełnieniu liczników skocz
R4 = 255 : R3 = 255 : R2 = 255 : R1 = 255       'Wygasza wyświetlacz na początek

Do : Loop : End          'to jest główny program -  pusta nieskończona pętla

Skok:
Timer1 = 50000           'czas cyklu ok. 0,25s
R4 = R3 : R3 = R2 : R2 = R1       'przepisywanie kolejnych znaków w lewo
Readeeprom R1 , Licznik  'jednen nowy znak z pamięci EEPROM
Incr Licznik             'licznik liter
If Licznik = 68 Then Licznik = 0       'odczytuje 68 znaków (0...67) EEPROM-a
Return

Co4ms:                   'przerwanie co 4,096ms (bez skracania cyklu)
Mux = Mux + 1 : If Mux = 4 Then Mux = 0 : Portd = &B1111111
Select Case Mux          ' obsługa wyświetlacza
Case 0:                  '               na prawym wyświetlaczu
  Portb = R1 : Portd.3 = 0       ' wyświetl zawartość R1
Case 1:
  Portb = R2 : Portd.4 = 0       ' wyświetl zawartość R2
Case 2:
  Portb = R3 : Portd.5 = 0       ' wyświetl zawartość R3
Case 3:                  '               na lewym wyświetlaczu
  Portb = R4 : Portd.6 = 0       ' wyświetl zawartość R4
End Select
Return                   'koniec obsługi przerwania od T/C0 co 4,096ms

Powyższy kod pochodzi z kursu Piotra Góreckiego "Mikrokontrolery dla początkujących". Kiedy zobaczyłem ,że natknąłem się na problemy, zgrałem z płyty (którą dostałem razem z książką) gotowy plik źródłowy - więc nie ma mowy o jakiejś literówce itp.

Kiedy zastąpie polecenie $eeprom przez $eepromhex i sprawdzam poprawność kodu w BASCOM-AVR powstaje błąd: Error:228 Line :19 (chodzi o linie z END) DATA line must be placed after the END statement , in File :C/ ..... itd.

[ Dodano: 22-02-2012, 11:56 ]

Dlaczego programuje w BASCOM a wgrywam w AVR studio?

Dlatego, że BASCOM-AVR nie obsługuje mojego programatora (przypominam AVTPROG2 - kompatybilny z stk500) a AVR studio nie obsługuje mojego języka programowania. Efekt jest taki ,że BASCOM-AVR używam to kompilacji, a AVR studio do wgrywania softu.

K.G., przez avrdude możesz zarówno programować flash i eeprom, nawet z dowolnym GUI (polecam Sinaprog lub burn-o-mat) będzie lżejszy niż AVRstudio, którego używasz tylko ułamka 😉

  • Lubię! 1

W Bascomie także można używać tego programatora wybierasz STK500 native driver lub, jeśli masz zainstalowane AVR Studio wybierasz STK500 (requires stk500.exe) i podajesz lokalizację pliku stk500.exe. Tak będzie Ci dużo wygodniej się pracować. Tak jak wcześniej pisałem możesz użyć AVRDUDE + nakładki graficznej lub innego programu choćby MkAvrCalculator.

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...