www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Začetniški problem v C-ju pri AVR-ju
Pojdi na stran Prejšnja  1, 2, 3, 4 ... 27, 28, 29  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
tadej.ko2
Član
Član



Pridružen-a: Sre 17 Okt 2007 18:26
Prispevkov: 76
Aktiv.: 0.38
Kraj: sveta trojica

PrispevekObjavljeno: Čet Feb 14, 2008 8:05 pm    Naslov sporočila:   Odgovori s citatom

z maskami preverjaš podobno kot postavljaš:
ali je bit 5 postavljen?

if(PINB & 0x20)
{
neki();
};


drugače pa: 7 poglavje, 57 stran: http://fides.fe.uni-lj.si/~lrnv/racunalnistvo2/zapiskipredavanj.pdf
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.35
Kraj: Medvode

PrispevekObjavljeno: Čet Feb 14, 2008 8:15 pm    Naslov sporočila:   Odgovori s citatom

upornik je napisal/a:
Predvidevam, da je ta "bit_is_clear(x,y)" neka že zapisana funkcija. Je zanjo v Winavr-ju potrebno vključiti katero dodatno knjižnico?

Ne rabiš nobene knjižnice.

_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.18
Kraj: Celje

PrispevekObjavljeno: Tor Feb 26, 2008 11:29 pm    Naslov sporočila:   Odgovori s citatom

Lep pozdrav!

A mi lahko kdo da kakšen nasvet, kako bi na LCD zaslon izpisoval na najbolj enostaven način
vrednosti neke spremenljivke. Napisal sem si funkcijo lcd_izpis("besedilo"), ki pa izpisuje samo
ascii kode.

Koda:
 Primer:

int i;

for(i=0;i<100;i++)
{
_delay_ms(200);
izpis_vrednosti(i);
_delay_ms(200);
}


Torej, upam da ste me razumeli. Potrebujem nasvet, kako si napisati takole funkcijo.

Hvala za odgovore!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
silvo_v
Član
Član



Pridružen-a: Pon 11 Jul 2005 22:00
Prispevkov: 146
Aktiv.: 0.66
Kraj: Domžale

PrispevekObjavljeno: Sre Feb 27, 2008 6:08 pm    Naslov sporočila:   Odgovori s citatom

Jaz spremenljivke izpisujem takole:

Koda:

void lcd_int (unsigned int val)
{
unsigned char s,d;   // stotice, desetice
unsigned int e;      // enice

  e=val/10;           // enice
  e=e*10;
  e=val-e;

  val=val/10;         // desetice
  d=val/10;
  d=d*10;
  d=val-d;

  val=val/10;         // stotice
  s=val/10;
  s=s*10;
  s=val-s;

  if(s==0) printch(' ');      // ce ni stotic jih ne izpise
  else printch(s+48);         // printch je funkcija za izpis ASCII znaka, ASCII 0 = 48
 
   printch(d+48);
   printch(e+48);
}



Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.18
Kraj: Celje

PrispevekObjavljeno: Sre Feb 27, 2008 6:55 pm    Naslov sporočila:   Odgovori s citatom

Super funkcija, hvala Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.20
Kraj: Trojane

PrispevekObjavljeno: Sre Feb 27, 2008 8:41 pm    Naslov sporočila:   Odgovori s citatom

a takole ne dela:

int var=14;
printf("i=%i",var);



ne vem, ponavadi dela, drugače pa uporabi sprintf...

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.98
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Feb 27, 2008 9:35 pm    Naslov sporočila:   Odgovori s citatom

Jaz mam v knjižnici takšno funkcijo:

Koda:
static void inline strreverse(char* begin, char* end)
{
   char aux;
   while(end>begin)
      aux=*end, *end--=*begin, *begin++=aux;
}
   
void itoa(int value, char* str, int base)
{
   static char num[] = "0123456789abcdef";
   char* wstr=str;
   if (base<2 || base>16){ *wstr='\0'; return; }
   do *wstr++ = num[value%base]; while(value/=base);
   *wstr='\0';
   strreverse(str,wstr-1);
}


Uporabljaš itoa, strreverse je samo pomožna funkcija. Pretvori poljubno dolg integer, pazit moraš samo, da imaš dovolj prostora v char* str. base je številski sistem -- 2, 8, 10, 16 ...

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
upornik
Član
Član



Pridružen-a: Ned 09 Jan 2005 22:35
Prispevkov: 261
Aktiv.: 1.18
Kraj: Celje

PrispevekObjavljeno: Pon Mar 03, 2008 12:48 am    Naslov sporočila:   Odgovori s citatom

Spet imam en problem in sicer s Timerjem1. S pomočjo drugih rutin in primerov sem sestavil en programček, da bi z njim oživel timer1 v 16 bitnem načinu. Na zelo podoben način, le z ustreznimi spremembami mi deluje brez problemov Timer0 v 8 bitnem načinu in sem ga že uporabil v eni aplikaciji. Program s Timerjem1 pa se normalno prevede, le deluje ne, zato predvidevam da je nekaj narobe z nastavitvijo.
Uporabljam winavr prevajalnik in AVRmega8515.

Koda:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>


volatile unsigned char delay;

/* signal handler for timer interrupt TOV1 */

ISR(TIMER1_OVF_vect)
{

TCNT1H=0x00;
TCNT1L=0x00;

delay++;

}

int main(void) {

/* use PortB for output (LED) */

DDRB=0xFF;
PORTB=0xFF;

// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off

TCCR1A=0x00;

// izberemo željeni delilnik   

//1:64
TCCR1B=0b00000011;

 
// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x04;

/*set timer counter initial value*/

TCNT1H=0x00;
TCNT1L=0x00;

ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
   

/* enable interrupts */

sei();


   while(1)
  {
     if(delay==2)
     {
       delay=0;                      //delay postavimo na nič
       PORTB ^= 0xFF;                //komplementiramo portb

     }
   }

}


Hvala za odgovor!
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
PC_Master
Član
Član



Pridružen-a: Pon 17 Mar 2008 20:10
Prispevkov: 319
Aktiv.: 1.63
Kraj: Domžale , Blizu Ljubljane , Poštna 1230

PrispevekObjavljeno: Pet Apr 04, 2008 7:54 am    Naslov sporočila:   Odgovori s citatom

Ima kdo kakšno kodo , kjer ko pritisneš Tipko , ledica zasveti , in ko jo pritisneš še enkrat, ledica ugasne?

Hvala.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.35
Kraj: Medvode

PrispevekObjavljeno: Pet Apr 04, 2008 9:51 am    Naslov sporočila:   Odgovori s citatom

Že prakrat napisano na forumu, malo pobrskaj.
_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
PC_Master
Član
Član



Pridružen-a: Pon 17 Mar 2008 20:10
Prispevkov: 319
Aktiv.: 1.63
Kraj: Domžale , Blizu Ljubljane , Poštna 1230

PrispevekObjavljeno: Pet Apr 04, 2008 2:17 pm    Naslov sporočila:   Odgovori s citatom

Na žalost ne najdem nič kar je čisti C pri AvrStudio GCC
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.35
Kraj: Medvode

PrispevekObjavljeno: Pet Apr 04, 2008 2:22 pm    Naslov sporočila:   Odgovori s citatom

Vem da je nekje napisano kako to narediš v Bascomu - pretvorba v C nebi smela biti zahtevna, če se ti pa zdi da je, boš moral pa še malo potrenirati programiranje.
_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
PC_Master
Član
Član



Pridružen-a: Pon 17 Mar 2008 20:10
Prispevkov: 319
Aktiv.: 1.63
Kraj: Domžale , Blizu Ljubljane , Poštna 1230

PrispevekObjavljeno: Pet Apr 04, 2008 6:13 pm    Naslov sporočila:   Odgovori s citatom

Bascom je lahek , problem je kako določen pin definirati in potem kako sploh naredim takole :

Koda:

if PINB.2 = 1 do
   I = NOT I
end


PINB.2 je vhod , I je pa bitna spremenljivka , ki je pač vezana na en izhod.

Sicer ali NOT operacija sploh obstaja pri mikroprocesorjih? Sej alternativo imam že v glavi.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
jvolk
Član
Član



Pridružen-a: Ned 05 Mar 2006 1:14
Prispevkov: 737
Aktiv.: 3.35
Kraj: okolica Divače

PrispevekObjavljeno: Sob Apr 05, 2008 12:32 am    Naslov sporočila:   Odgovori s citatom

Koda:

if (PINB.2){
   I = !I;
}


To bi moralo delovati. Seveda moreš imet zgoraj definiran I kot ledico.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Domenius
Član
Član



Pridružen-a: Sre 30 Nov 2005 14:15
Prispevkov: 1188
Aktiv.: 5.35
Kraj: Medvode

PrispevekObjavljeno: Sob Apr 05, 2008 12:55 am    Naslov sporočila:   Odgovori s citatom

PC_Master je napisal/a:
Sicer ali NOT operacija sploh obstaja pri mikroprocesorjih?

Nekatere stvari bi se zelo (in po nepotrebnem) zakomplicirale, če nebi mikrokontrolerji poznali operacije NOT - to je ena ključnih osnovnih bitnih operaciji.

_________________
It's electric!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3, 4 ... 27, 28, 29  Naslednja
Stran 3 od 29

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 47 dni


Powered by phpBB © 2001, 2005 phpBB Group