Jestem ciekaw ile według Was powinna trwać jedna pętla takiego programu? I co zrobić by wystawianie tych cholernych liczb na port trwało krócej
$regfile = "m8def.dat"
$crystal = 16000000
Config Pind.0 = Output
Config Pind.1 = Output
Config Pind.2 = Output
Config Pind.3 = Output
Config Pind.4 = Output
Config Pind.5 = Output
Config Pind.6 = Output
Config Pind.7 = Output
Dim A As Byte
Dim K As Integer
Do
For K = 1 To 60
A = Lookup(k , Tab)
Portd = A
Next K
Loop
End
Tab:
Data 63 , 70 , 76 , 82 , 89 , 94 , 100 , 105 , 110 , 114 , 118 , 121 , 123 , 125 , 126 , 126 , 126 , 125 , 123 , 121 , 118 , 114 , 110 , 105 , 100 , 95 , 89 ,
Data 83 , 76 , 70 , 63 , 57 , 50 , 44 , 37 , 32 , 26 , 21 , 16 , 12 , 9 , 6 , 3 , 1 , 0 , 0 , 0 , 1 , 3 , 5 , 8 , 12 , 16 , 21 , 26 , 31 , 37 , 43 , 50 , 56 , 62
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięile czasu to powinno trwać?
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
- Aleksander Zawada
- Moderator
- Posty:532
- Rejestracja:21 lut 2003, o 12:10
- Lokalizacja:Warszawa
- Kontaktowanie:
Nie żebym kochał Elecośtam, ale tempo skróciłbym do minimum właśnie assemblerem, nie skacząc po tablicy we FLASH, tylko całą funkcję wpisując do FLASH programu. Jeśli to jest ATmega8, to dodatkowo pójdzie na 20MHz i zrobiłbym z grubsza tak:
.include "m8def.inc"
LDI r16,255
OUT DDRD,r16
Loop:
LDI r16,63
OUT PORTD,r16
LDI r16,70
OUT PORTD,r16
LDI r16,76
OUT PORTD,r16
...
LDI r16,50
OUT PORTD,r16
LDI r16,56
OUT PORTD,r16
LDI r16,62
OUT PORTD,r16
RJMP Loop
Tak jest chyba najszybciej, bo LDI trwa 1 cykl, a zaadresowanie FLASH 2 cykle.
Widzę tylko, że k ma się zmieniać 1..60, a w tablicy doliczyłem się 61 wartości, ale nie znam Bascoma, może w ogóle o co innego Ci Aleksander chodzi...
.include "m8def.inc"
LDI r16,255
OUT DDRD,r16
Loop:
LDI r16,63
OUT PORTD,r16
LDI r16,70
OUT PORTD,r16
LDI r16,76
OUT PORTD,r16
...
LDI r16,50
OUT PORTD,r16
LDI r16,56
OUT PORTD,r16
LDI r16,62
OUT PORTD,r16
RJMP Loop
Tak jest chyba najszybciej, bo LDI trwa 1 cykl, a zaadresowanie FLASH 2 cykle.
Widzę tylko, że k ma się zmieniać 1..60, a w tablicy doliczyłem się 61 wartości, ale nie znam Bascoma, może w ogóle o co innego Ci Aleksander chodzi...
Niestety, prawda jest taka, że jeśli pierwsze skrzypce ogdrywa prędkość, to Bascom niestety wymięka Asembler to jedyne rozwiązanie. Sposób zaproponowany przez Czarutka jest najszybszy, chociaż zajmuje 4 razy więcej pamięci programu. Jesli starczy miejsca to można to tak rozwiązać (tylko modyfikacja danych na wypadek jakiejś zmiany w programie bedzie trochę niewygodna).
- Aleksander Zawada
- Moderator
- Posty:532
- Rejestracja:21 lut 2003, o 12:10
- Lokalizacja:Warszawa
- Kontaktowanie:
Ja tez jestem za asemblerem ale jesli szukasz rozwiązania omiajającego asm to wez jakis nowy procek atmela ktory wyrabia 20 MHz i zasil go 5,5 albo nawet 6V i wpakuj 25 ...30MHz działa sprawdziłem na tiny 2313 choc czasami sie wiesza i grzeje sie troche w kazdym badz razie moze ci rozwiazac problem... choc to niepewne rozwiazaniei moze wykluczyc jesli to nie amatorska konstrukcja tylko powazne urzadzenie.. a jesli chodzi o bascoma to napisz program tak jak czarutek wyzej napisał w asmie... nie w pętli tylko linijka po linijce...
portb = ...
portb = ...
itd.
opiszesz sie wiecej w kodzie ale hex bedzie krótszy .. kto wie czy nawet nie to samo wyjdzie jak w asmie bo to bardzo prosta operacja i moze byc tak samo tłumaczona...
co do innych zeczy typu symulator i jego iles tam lini do przerobienia to jeszcze wazne jest czy zalezy ci na predkosci całego programu czy tylko na wystawianiu tych danych na linie... bo bascom ma dziwną "zaletę" dodawania na poczatku programu kupy niepotrzebnych zeczy....
portb = ...
portb = ...
itd.
opiszesz sie wiecej w kodzie ale hex bedzie krótszy .. kto wie czy nawet nie to samo wyjdzie jak w asmie bo to bardzo prosta operacja i moze byc tak samo tłumaczona...
co do innych zeczy typu symulator i jego iles tam lini do przerobienia to jeszcze wazne jest czy zalezy ci na predkosci całego programu czy tylko na wystawianiu tych danych na linie... bo bascom ma dziwną "zaletę" dodawania na poczatku programu kupy niepotrzebnych zeczy....
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości