AVR-programowanie w "C" na Winavr

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!
ODPOWIEDZ
Marek R
-
Posty: 1
Rejestracja: 04 cze 2004, 19:34
Lokalizacja: Łódź

AVR-programowanie w "C" na Winavr

Post autor: Marek R » 07 cze 2004, 9:28

Cze Wszystkim. Jestem początkujący, staram sie napisac program na mikrokontroler aby generował na portach od PB0 do PB7 przebiegi prostokątne o częstotliwości x2 od poprzedniego portu. Czy ktoś może mi podpowiedzieć jak to wykonać??Czy można ten program zmodifikować? Czy potrzebny jest nowy??

Program:
#include <io.h>
#define tau0 6; //stała czsowa dla 1KHz @8MHz
int main(void)
{
unsigned char licznik=2;
DDRB=0x01; //wyjściem generatora będzie port PB0
TCNT0=tau0; //wpisz staą czasową dla zadanego interwału
TCCR0=2; //timer0 będie pracował z preskalerem Fosc/8
while(1)
{
while((inp(TIFR)&0x02 !=0x02);
//czekaj na ustawienie flagi
//TOV0 (przekręcenie licznika)
TCNT0=tau0; //wpisz sta czsową
if(--licznik=0) //zmiana polaryzacji wyjścia wymaga
//2-krotnego przekręcenia si licznika
{
PORTB^=0x01; //zmień stan wyjścia
licznik=2; //odśwież stan licznika
}
TIFR=1<<TOV0; //kasuje flag przepełnienia
}
}
Podpowiedziano mi że można to zrealizować jak licznik binarny - kazdy bit wg starszeństwa ma się ponoć rżnić o połowe Czy chodzi tu o to że mam 8 bitow z czegfo najmodszy to 25 kHZ i tak x2 i tak wybrać aby czytał f z odpowiedniego bitu i przekazywał na odpowiedni port??

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 07 cze 2004, 16:11

Ja bym chyba dał rade to zrobić . . . ale w bascomie 8)

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 08 cze 2004, 8:15

Czy chodzi o to, że na każdym kolejnym pinie portu ma być przebieg o częstotiwości 2 razy większej niż na poprzednim pinie? Czy dobrze rozumiem? Czy na PB0 jest przebieg prostokątny o f=25kHz, na PB1 f=50kHz itd.?

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 08 cze 2004, 10:30

A to znaczy, że jeżeli zaczynasz od 25 kHz, dale 50 kHz , to skończysz na
6,4 MHz, a tego to już procek nie obrobi.
Skontaktuj się na: an177@poczta.fm

ODPOWIEDZ