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ę

Assembler na C

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57
Re: Assembler na C

Postautor: Ania30 » 27 wrz 2018, o 13:20

r-mik napisał:
"Chcesz dokładnie, zrób jak pisałem wcześniej i to KILKA RAZY - użyj timerów."
Chciałabym użyć timerów, i mieć kod na timerach,tylko jak ?,bez dobrej pomocy nie dam rady.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 28 wrz 2018, o 10:18

#include <avr/io.h>

int main (void)
{
unsigned char Sekundy = 0; // Nasza zmienna ustawiona na 0
DDRB = (1<<PB1)|(1<<PB2);
PORTB|=(1<<PB1); // Ustawienie bitu LED jako wyjścia
TCCR1B |= ((1 << CS10) | (1 << CS11)); //Ustawia timer z preskalerem Fcpu/64


while(1)
{
// Sprawdza wartość timera w pętli IF, prawda jeśli wartość wynosi 1 sekundę

if (TCNT1 >= 15625)
{
TCNT1 = 0; //Zerowanie Timera
Sekundy++;
// Sprawdzenie, czy zmienna osiągnęła wartość 64
if (Sekundy == 64)
{
Sekundy = 0; // TODO: Zerowanie wartości zmiennej
PORTB ^= (1<<PB1)|(1<<PB2); // Zmień stan diody LED
}
}
}
}
-----------------------------------------------------------
http://diycenter.acid19.linuxpl.com/pri ... &item_id=3

https://forbot.pl/blog/wszystko-co-musi ... pwm-id5021

http://www.niki.art.pl/index.php/avr/59 ... zetowe-ctc
Ostatnio zmieniony 28 wrz 2018, o 10:57 przez Ania30, łącznie zmieniany 2 razy.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 28 wrz 2018, o 10:54

Źle, źle, źle.
Tak piszą Arduinowcy.
Timer sprzętowo ma generować przebieg, pętla główna wygląda wtedy tak:

Kod: Zaznacz cały

main() { }
Czyli nie robi nic. Wszystko robi sprzęt.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 28 wrz 2018, o 11:51

/*
* LED.c
*
* Created on: 10-01-2014
* Autor: franek
* CPU: ATtiny13A
* FUSEBIT: LOW=0x75 HIGH=0xFF
*/

#include <avr/io.h>
#include <avr/interrupt.h>

// definicje podłączenia portów
#define LED_PIN1 (1<<PB1) // dioda LED czerwona (anoda do portu PB1, katoda do PB2)
#define LED_PIN2 (1<<PB2) // dioda LED zielona (katoda podłączona do PB1, anoda do PB2)

// makra
#define LED_ON PORTB |= LED_PIN1; PORTB &= ~LED_PIN2;
#define LED_OFF PORTB |= LED_PIN2; PORTB &= ~LED_PIN1;

// definicje typów
typedef uint8_t u08;
typedef uint16_t u16;

// definicje opóźnień
#define WAIT 2400 // czas opóźniena: dla 120 sek = 20Hz * 120sek = 2400

// definicje zmiennych
volatile u08 led;

int main (void)
{

// inicjacja wyjść
DDRB |= LED_PIN1 | LED_PIN2 ; // ustawiamy rejest kierunkowy na wyjścia dla portów LED

// Ustawienie Timer0 CTC mode
TCCR0A |= (1<<WGM01); // tryb CTC
TCCR0B |= (1<<CS02)|(1<<CS00); // preskaler = 1024
OCR0A = 234; // ~ 20 Hz dla zegara 4,8 MHz
TIMSK0 |= (1<<OCIE0A); // Timer/Counter0 Output Compare Match

sei(); // włączenie przerwań

while (1) // główna pętla
{
if (led) { LED_ON } else { LED_OFF }
}
}

// ===== obsługa przerwanie 20 Hz =====
ISR (TIM0_COMPA_vect)
{
static u16 wait = WAIT;

if (!--wait)
{
wait = WAIT;
if (led) led=0; else led=1;

}
}
Ostatnio zmieniony 28 wrz 2018, o 14:46 przez Ania30, łącznie zmieniany 2 razy.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 28 wrz 2018, o 12:35

Sprzętowe generowanie sygnału nie wymaga użycia przerwań.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 28 wrz 2018, o 13:08

Dałam,main() { } ,tak jak radził r-mik,kod sie nieskompilował.
Czy w tym kodzie o godz 11:18 , można zmienić sekundy na us , jak ?
Ile kosztuje najtańsze GPIO ? ,jakiś link do niego.
Jakim programem zrobić rozwiniecie asm , i jak nim to zrobić ?.
Czy programem AVR 4.18 lub innym AVR , można zrobic rozwiniecie asm ?.


autor: Ania30 » dzisiaj, o 11:18
#include <avr/io.h>

int main (void)
{
unsigned char Sekundy = 0; // Nasza zmienna ustawiona na 0
DDRB = (1<<PB1)|(1<<PB2);
Ostatnio zmieniony 28 wrz 2018, o 17:23 przez Ania30, łącznie zmieniany 1 raz.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 30 wrz 2018, o 08:59

Dałam,main() { } ,tak jak radził r-mik,kod sie nieskompilował.
Bez pokazania kodu i wyświetlonych błędów to tylko Wróżbita Maciej może pomóc.
Czy w tym kodzie o godz 11:18 , można zmienić sekundy na us , jak ?
1 sekunda = 1e6us,wystarczy wiec sekundy pomnożyć przez 1e6.
Ile kosztuje najtańsze GPIO ? ,jakiś link do niego.
Policz. Gdy uC za 20zł ma do wykorzystania 100GPIO, otrzymasz cenę jednostkową. To będzie najtańsza opcja. Jeśli GPIO jest zewnętrzne będzie drożej. Układ z 16 GPIO to koszt ok 3zł.
Z pewnością nie oo to chodzi, bo potrafię czytać w myślach i wiem, że nie wiesz o co pytasz. Przeczytaj jakiś kurs AVR, bo pytania, które zadajesz, wskazują na to, że o uC wiesz tyle, że są.
Jakim programem zrobić rozwiniecie asm , i jak nim to zrobić ?.
Najczęściej nic nie trzeba robić. Domyślnie Atmel Studio, AVR Stuino, itp generują stosowny plik.


Nie wiem czemu walczysz z tymi dwoma nop. Już pisałem kiedy one są potrzebne ale uparcie trwasz przy swoim. Mamy telewizję "Trwam", może teraz powstanie forum elektroniczne "Trwam przy swoim choć nie mam racji". Do tego kolejna sentencja, znanej osoby "Nawet jak nie mam racji to mam rację". Jak ktoś się będzie "burzył" to: "Ja tu jestem kierownikiem i co mi pan zrobisz" i dajesz bana, jak na znanym (niestety) forum na "A"(nie chcę go reklamować).

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 30 wrz 2018, o 14:23

Odpowiedz niedostateczna i niegrzeczna.
Przy takich odpowiedziach odechciewa się pytać dalej,i o to chodzi odpowiadającemu.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 1 paź 2018, o 08:10

Nie niegrzeczna tylko stwierdzająca fakty!

Proszę się nauczyć podstaw i dopiero pytać, tyle, że znając podstawy takich pytań by nie było.
Od czasu kiedy tematy wypełnienia 50% o super dużej dokładności do oczyszczania wody się toczą, można było samemu nauczyć się podstaw kilka razy!!!

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 1 paź 2018, o 10:24

Kolejna niedostateczna i niegrzeczna odpowiedz.
Proszę się nauczyć podstaw i dopiero odpowiadać, tyle, że znając podstawy takich odpowiedzi by nie było.
Od czasu kiedy tematy wypełnienia 50% o super dużej dokładności do oczyszczania wody się toczą, można było ,jeśli się jest dobrym człowiekiem ,i nie głupim , dać rozwiązanie już na pierwszej stronie .
Co niniejszym czynię,bez Twojej łaski.

https://forbot.pl/blog/kurs-stm32-7-lic ... pwm-id8459

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 1 paź 2018, o 12:53

Kolejna niedostateczna i niegrzeczna odpowiedz.
Proszę się nauczyć podstaw i dopiero odpowiadać, tyle, że znając podstawy takich odpowiedzi by nie było.
Od czasu kiedy tematy wypełnienia 50% o super dużej dokładności do oczyszczania wody się toczą, można było ,jeśli się jest dobrym człowiekiem ,i nie głupim , dać rozwiązanie już na pierwszej stronie .
Co niniejszym czynię,bez Twojej łaski.

https://forbot.pl/blog/kurs-stm32-7-lic ... pwm-id8459
Ta wypowiedź tylko potwierdza to co napisałem wcześniej. Życzę powodzenia, używają kursu z linku przeznaczonego dla 32-bit ARM, zrealizować to na AVR 8-bit AVR.

Zacznij od podstaw! Na razie nie widzisz różnicy pomiędzy AVR a ARM!!! To jakby nie odróżnić cebuli od jabłka (i to i to jest w przybliżeniu kulą).
Poznaj układy peryferyjne. Praktycznie każda rodzina uC ma je inne, a już na pewno ARM różny się od AVR.
Trochę pokory. Nie dziwię się, ze na innych forach nikt nie chce pomóc. Na tym, niedługo też tak będzie.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: Assembler na C

Postautor: pajaczek » 1 paź 2018, o 20:24

1 sekunda = 1000us,wystarczy wiec sekundy pomnożyć przez 1000.
Albo od jakiegoś czasu zmieniły się podstawy matematyki (hmm... a może fizyki?) albo jednak by z sekund uzyskać us trzeba te pierwsze pomnożyć przez 1000, a później jeszcze przez 1000 ;)
Ale to tak tylko się czepiam.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 11 paź 2018, o 12:13

Na wszystkich forach bez wyjątku mi pomogli, zli przeszkadzali i byli złosliwi.Najbardziej na tym forum ze wszystkich for, pomógł mi ACeK,bo dał mi kod który ma 50%/50% na 100% ,jak zapewniał.
Ostatnio zmieniony 11 paź 2018, o 18:34 przez Ania30, łącznie zmieniany 4 razy.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 11 paź 2018, o 12:36

Co napisać w ostatnim kodzie ACeKa , w ldi r20, 0xa1
ldi r21, 0x07 ,tak jak radził ACeK ,abym miała 64/64 sekund,na wewnętrznym 1MHz,bo wyjaśnienia ACeKa , z dnia 22 sierpnia 2018, o 09:25, mi nie pomogły, dalej nie wiem co i jak.

Mam taką propozycję,kto poda kod w j.C ,najbardziej zbliżony do idealnego duty cycle 50%,ten na priwa otrzyma ode mnie wiadomość ,jak zdobyć coś co rezonuje w zakresie od 2 Hz do 10 Hz i można go podłączyć do uC.
Kto mi powie,jak zrobić rozwiniecie asm,ten także będzie jeśli chce, miał to coś co rezonuje około 2 Hz.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 11 paź 2018, o 12:47

kto poda kod w j.C ,najbardziej zbliżony do idealnego duty cycle 50%,ten na priwa otrzyma ode mnie wiadomość ,jak zdobyć coś co rezonuje w zakresie od 2 Hz do 10 Hz i można go podłączyć do uC.
Kto mi powie,jak zrobić rozwiniecie asm,ten także będzie jeśli chce, miał to coś co rezonuje około 2 Hz.
Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 11 paź 2018, o 13:53

r-mik napisał:
"Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?"

No to mało wiesz,w tym temacie i tematach na tym forum,widać to po odpowiedziach.
Ostatnio zmieniony 13 paź 2018, o 11:35 przez Ania30, łącznie zmieniany 2 razy.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Re: Assembler na C

Postautor: pajaczek » 12 paź 2018, o 21:41

Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?
Jak to po co?
Żeby mieć wersję IoT.
No i nie zapominajmy że wówczas możesz sobie sterować tym czymś w trybie 50/50.

Awatar użytkownika
r-mik
-
-
Posty:351
Rejestracja:14 cze 2005, o 19:18
Lokalizacja:Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 12 paź 2018, o 22:01

Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?
Jak to po co?
Żeby mieć wersję IoT.
Zmiana parametrów (częstotliwość, moc) przez SSH?
A może przez SMS o podwyższonej płatności? To akurat łatwo się robi przez PHP.

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 14 paź 2018, o 20:11

Tworzenie programów w kodzie maszynowym dla ZX81 na PC-cie

https://eduinf.waw.pl/inf/retro/005_zx81_info/0007.php

mix kodu c i asemblera

https://www.google.pl/search?q=mix+kodu ... 00&bih=471

Ania30
-
-
Posty:124
Rejestracja:31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 14 paź 2018, o 21:45

Dlaczego ten kod się nie kompiluje na 31 wywala błąd : call delayYx1mS ; keep the LED off for 1 second.
Na lini 36 to samo : call delayYx1mS ; keep the LED on for 1 secondcall delayYx1mS

https://www.avrfreaks.net/forum/any-asm ... leds-blink
https://www.google.pl/search?q=assemble ... 00&bih=471

.nolist
.include "m8adef.inc"
.list

.equ fclk = 16000000 ; system clock frequency

; the LED can be on any I/O pin - just use the appropriate equates here
.equ LED_connection = PORTB5
.equ LED_port = PORTB
.equ LED_ddr = DDRB

.def temp = R16 ; temporary storage


.cseg
.org 0x00

start:
; initialize the stack pointer to the highest RAM address
ldi temp, low(RAMEND)
out SPL, temp
ldi temp, high(RAMEND)
out SPH, temp

sbi LED_ddr, LED_connection ; configure the LED line as an output

blink:
cbi LED_port, LED_connection ; turn the LED off
ldi YL, low(1000) ; data for 1000 mS delay
ldi YH, high(1000)
call delayYx1mS ; keep the LED off for 1 second

sbi LED_port, LED_connection ; turn the LED on
ldi YL, low(1000) ; data for 1000 mS delay
ldi YH, high(1000)
call delayYx1mS ; keep the LED on for 1 second

rjmp blink

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości