Witam zaczynam zabawę z AVR GCC w AVR Studio 5.
Wcześniej programowałem trochę w assemblerze i w C dla procesorów PIC.
Zdecydowałem pobawić się trochę AVR Studio 5 bo ma wbudowany kompilator.
Napisałem/zmodyfikowałem program z jakiegoś tutoriala online.
Program ma na celu zapalać i gasić diodę na linii 0 portu B co określony czas.
LED jest podłączony do uC bezpośrednio i aktywnym stanem jest 0.
Po kompilacji i uruchomieniu programu LED owszem mruga ale o 8 razy za szybko (obliczyłem na oscyloskopie że stan niski i wysoki trwają po 12ms).
Zauważyłem że jak zaznaczę w fuse bit CKDIV/8 że ma podzielić zegar przez 8 to czas jest ok, ale przecież wtedy mój procesor pracuje 8 razy wolniej czyż nie ?
W projekcie ustawiam Optymalizację na -02 nie wiem czy dobrze, czy nie szczerze mówiąc. Jeśli istnieje jakiś tutorial odnośnie pisania w AVR GCC to chętnie poczytam bo nie wiem skąd wziąć zestaw komend i funkcji. W CSS dla PIC jest świetny PDF który tłumaczy wszystko nie znalazłem natomiast za dużo informacji dotyczących AVR-kó.
Z góry bardzo dziękuję i będę wdzięczny za pomoc.
Pozdrawiam,
Michał.
Używam załączonej biblioteki avr/delay.h i oto mój kod:
Wcześniej programowałem trochę w assemblerze i w C dla procesorów PIC.
Zdecydowałem pobawić się trochę AVR Studio 5 bo ma wbudowany kompilator.
Napisałem/zmodyfikowałem program z jakiegoś tutoriala online.
Program ma na celu zapalać i gasić diodę na linii 0 portu B co określony czas.
LED jest podłączony do uC bezpośrednio i aktywnym stanem jest 0.
Po kompilacji i uruchomieniu programu LED owszem mruga ale o 8 razy za szybko (obliczyłem na oscyloskopie że stan niski i wysoki trwają po 12ms).
Zauważyłem że jak zaznaczę w fuse bit CKDIV/8 że ma podzielić zegar przez 8 to czas jest ok, ale przecież wtedy mój procesor pracuje 8 razy wolniej czyż nie ?
W projekcie ustawiam Optymalizację na -02 nie wiem czy dobrze, czy nie szczerze mówiąc. Jeśli istnieje jakiś tutorial odnośnie pisania w AVR GCC to chętnie poczytam bo nie wiem skąd wziąć zestaw komend i funkcji. W CSS dla PIC jest świetny PDF który tłumaczy wszystko nie znalazłem natomiast za dużo informacji dotyczących AVR-kó.
Z góry bardzo dziękuję i będę wdzięczny za pomoc.
Pozdrawiam,
Michał.
Używam załączonej biblioteki avr/delay.h i oto mój kod:
/*
* Pierwszy_C.c
*
* Created: 11/03/2011 10:10:22
* Author: Michal.Swic
*/
#include <avr/io.h>
#include <util/delay.h>
// Functions prototype
int set_PORTB_bit(int line, int state);
// Program always starts from main
int main(void)
{
// Set port B0 as a output - binary 1
// PORTB bit 0 psychical pin POTRB0 (pin2) LED - active low
// PORT settings , set PORTB.0 as a output 1 all other as input DDRB = 00000001
// PORTB.0 output - LED
DDRB = 00000001; // PORTB.0 output
set_PORTB_bit(0,0);
// Forever loop
while(1)
{
set_PORTB_bit(0,0);
_delay_ms(100);
set_PORTB_bit(0,1);
_delay_ms(100);
}
}
int set_PORTB_bit (int line, int state)
{
if (state == 0) {PORTB &= ~(1<<line);} // If specified state is 0 then clear the portb line - specified
else {PORTB |= (1<<line);} // If specified state is 1 set portb line - specified
}
