To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
Post
autor: Skrzydlaty » 29 paź 2007, 0:17
Napisałem prosty programik do wykorzystania ADC w ATMEGA8535:
Kod: Zaznacz cały
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , E = Pinb.1 , Rs = Pinb.0
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto, Reference = Internal
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up
Enable Interrupts
Start Adc
Dim _in As Word
Dim _out As Word
Dim _out_trans As Word
Cls
Pwm1a = 100
Do
_in = Getadc(0)
Pwm1a = _out
_out_trans = _out * 0.0048828125
Cls
Lcd _in : "V in " : _out_trans : "V out"
Loop
Ale wywala mi błąd 202... co jest grane? Jak ustawiam typ procka na 90s8535 to wszystko jest ok, ale dla MEGA8535 już nie....
-
ZbeeGin
Post
autor: ZbeeGin » 29 paź 2007, 6:48
A mógłby kolega pełnym zdaniem błąd przytoczyć? Która wersja kompilatora?
W posiadanych wersjach BASCOM-AVR program się prawidłowo kompiluje:
Kod: Zaznacz cały
$regfile = "m8535.dat"
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.5 , E = Pinb.1 , Rs = Pinb.0
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto, Reference = Internal
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up
Enable Interrupts
Start Adc
Dim _in As Word
Dim _out As Word
Dim _out_trans As Word
Cls
Pwm1a = 100
Do
_in = Getadc(0)
Pwm1a = _out
_out_trans = _out * 0.0048828125
Cls
Lcd _in ; "V in " ; _out_trans ; "V out" ' nie dwukropki tylko średniki!!!
Loop
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
Post
autor: Skrzydlaty » 29 paź 2007, 10:22
Wysksuje:
Kod: Zaznacz cały
Error: 202 Line: 6 .EQU not found, probably using functions that are not suported by the selected chip [ADCSR] , in file C:\.....
Wersja Bascoma: 1.11.7.4
Przy wyświetlaniu na LCD faktycznie średniki ale wyświetlanie miałem zaremowane więc nawet sie o to kompilator nie czepiał.
-
ZbeeGin
Post
autor: ZbeeGin » 29 paź 2007, 17:35
A raport kompilacji można zobaczyć? Bo prawdopodobnie mimo ustawień w opcjach kompilatora masz wybrany zły procesor.
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
Post
autor: Skrzydlaty » 29 paź 2007, 18:21
A który to jest ten raport?
Wybrałem w opcjach typ "MEGA8535" a i dołożyłem w pierwszej linijce "$regfile = "m8535.dat"" - za każdym razem wyskakuje tamten błąd.
-
ZbeeGin
Post
autor: ZbeeGin » 29 paź 2007, 20:01
Jest to plik z rozszerzeniem RPT. Przykład:
Report : SKRZYDLATY_ELPORTAL
Date : 10-29-2007
Time : 06:54:22
Compiler : BASCOM-AVR LIBRARY V 1.11.8.9
Processor : M8535
SRAM : 200 hex
EEPROM : 200 hex
ROMSIZE : 2000 hex
ROMIMAGE : 350 hex -> Will fit into ROM
ROMIMAGE : 848 dec
FLASH USED : 10 %
BAUD : 9600 Baud
XTAL : 16000000 Hz
BAUD error : 0.16%
Stack start : 25F hex
Stack size : 20 hex
S-Stacksize : 8 hex
S-Stackstart : 240 hex
Framesize : 18 hex
Framestart : 227 hex
Space left : 443 dec
LCD DB7 : PORTB.5
LCD DB6 : PORTB.4
LCD DB5 : PORTB.3
LCD DB4 : PORTB.2
LCD E : PORTB.1
LCD RS : PORTB.0
LCD mode : 4 bit
Sprawdź jeszcze czy w pliku definicji
M8535.dat masz takie linie w sekcji
[IO]:
Kod: Zaznacz cały
ACSR =$08
ADMUX =$07
ADCSRA =$06
ADCSR =$06 ; old name
ADCH =$05
ADCL =$04
Jeśli masz możliwość to ściągnij sobie najnowszą wersję BASCOMa i tam dokonaj kompilacji. U mie przechodzi bez kłopotu.
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
Post
autor: Skrzydlaty » 29 paź 2007, 22:06
Raportu kompilacji mi nie tworzy.
W pliku "m8535.dat" nie mam tej lini:
[ Dodano: 2007-10-30, 14:42 ]
Ok, zamieniłem te linie i działa:)