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
Moderatorzy:Jacek Bogusz, procesorowiec, r-mik, Moderatorzy
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.
"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.
Re: Assembler na C
#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
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.
Re: Assembler na C
Źle, źle, źle.
Tak piszą Arduinowcy.
Timer sprzętowo ma generować przebieg, pętla główna wygląda wtedy tak:
Czyli nie robi nic. Wszystko robi sprzęt.
Tak piszą Arduinowcy.
Timer sprzętowo ma generować przebieg, pętla główna wygląda wtedy tak:
Kod: Zaznacz cały
main()
{
}
Re: Assembler na C
/*
* 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;
}
}
* 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.
Re: Assembler na C
Sprzętowe generowanie sygnału nie wymaga użycia przerwań.
Re: Assembler na C
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);
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.
Re: Assembler na C
Bez pokazania kodu i wyświetlonych błędów to tylko Wróżbita Maciej może pomóc.Dałam,main() { } ,tak jak radził r-mik,kod sie nieskompilował.
1 sekunda = 1e6us,wystarczy wiec sekundy pomnożyć przez 1e6.Czy w tym kodzie o godz 11:18 , można zmienić sekundy na us , jak ?
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ł.Ile kosztuje najtańsze GPIO ? ,jakiś link do niego.
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ą.
Najczęściej nic nie trzeba robić. Domyślnie Atmel Studio, AVR Stuino, itp generują stosowny plik.Jakim programem zrobić rozwiniecie asm , i jak nim to zrobić ?.
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ć).
Re: Assembler na C
Odpowiedz niedostateczna i niegrzeczna.
Przy takich odpowiedziach odechciewa się pytać dalej,i o to chodzi odpowiadającemu.
Przy takich odpowiedziach odechciewa się pytać dalej,i o to chodzi odpowiadającemu.
Re: Assembler na C
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!!!
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!!!
Re: Assembler na C
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
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
Re: Assembler na C
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.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
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.
Re: Assembler na C
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 10001 sekunda = 1000us,wystarczy wiec sekundy pomnożyć przez 1000.
Ale to tak tylko się czepiam.
Re: Assembler na C
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.
Re: Assembler na C
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.
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.
Re: Assembler na C
Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?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.
Re: Assembler na C
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.
"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.
Re: Assembler na C
Jak to po co?Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?
Żeby mieć wersję IoT.
No i nie zapominajmy że wówczas możesz sobie sterować tym czymś w trybie 50/50.
Re: Assembler na C
Zmiana parametrów (częstotliwość, moc) przez SSH?Jak to po co?Wiem co to jest! Wiem gdzie kupić - w "Sexshop"-ie. Po co podłączać pod uC? Nie wiem?
Żeby mieć wersję IoT.
A może przez SMS o podwyższonej płatności? To akurat łatwo się robi przez PHP.
Re: Assembler na C
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
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
Re: Assembler na C
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
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
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości