Lite frågor ang. AVR

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
frejo
Inlägg: 496
Blev medlem: 21 april 2004, 21:43:01
Ort: Linköping

Inlägg av frejo »

cykze skrev:
Dumma Telia-DNS! Gick inte att komma in på någonting igår kväll, och därmed inte att skicka det här inlägget heller.
Lite off-topic men jag hade också problem med Telia samma kväll, båda dns-servrarna var nere...
Matade in denna dns manuellt istället: 194.23.44.10
Kan va bra att ha om det händer igen ;)
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

problemet är fixat:D:D det var någon kallödning någonstans..
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

hmm.. hur blir det om jag ska använda portc?

provade men det blev fel någonstans igen:(

Kod: Markera allt

#include <avr/io.h>
#include <avr/delay.h>
#include <inttypes.h>

int main()
{
   uint16_t i, j;

   DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4)    ; //Gör PC0, PC1, PC2, PC3 och PC4 till utgångar
   
   while (1)
   {
      PORTC |=  _BV(PC0); //gör PC0 hög
      PORTC &= ~_BV(PC1);//Gör PB1 låg
      PORTC &= ~_BV(PC2);//Gör PC2 låg
	  PORTC &= ~_BV(PC3);//Gör PC3 låg
	  PORTC &= ~_BV(PC4);//Gör PC4 låg
      for (i=0;i<2;i++)//loop
      {
         for (j=0;j<1000;j++)
            _delay_loop_2(1000); //pause
         PORTC ^= _BV(PC0);//Gör PC0 låg
      }

      PORTC &= ~_BV(PC0);//Gör PB0 låg
      PORTC |=  _BV(PC1);//Gör PB1 Hög
      for (i=0;i<2;i++)//loop
     {
         for (j=0;j<1000;j++)
            _delay_loop_2(1000);//pause
         PORTC^=_BV(PC1)
    	 }
         PORTC &=~_BV(PC1);//Gör PB1 låg
         PORTC |= _BV(PC2);//Gör PB2 hög
         for (i=0;i<2;i++)//loop
          {
             for (j=0;j<1000;j++)
              _delay_loop_2(1000);//Pause
             PORTC^=_BV(PC2)
	      }
		 PORTC &=~_BV(PC2);
		 PORTC |=  _BV(PC3);
		 for (i=0;i<2;i++)//loop
		 {
		      for (j=0;j<1000;j++)
		      _delay_loop_2(1000);//Pause
		     PORTC^=_BV(PC3);
	     }
		 PORTC &=~_BV(PC3);
		 PORTC |=  _BV(PC4);
 }

}
   return 1;
sen undrar jag om man sätter en port som utgång, blir den automatiskt hög då?
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Och åter igen glömde du sätta in vad komilatorn säger...

Ska det verkligen stå return 1; ?

//Rille
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

jag vet inte. ska prova utan:P

> "make" all

-------- begin --------
avr-gcc (GCC) 3.4.1
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling: blarinnande.c
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=blarinnande.lst -std=gnu99 -Wp,-M,-MP,-MT,blarinnande.o,-MF,.dep/blarinnande.o.d blarinnande.c -o blarinnande.o
blarinnande.c:6: warning: function declaration isn't a prototype
blarinnande.c: In function `main':
blarinnande.c:32: error: parse error before '}' token
blarinnande.c:40: error: parse error before '}' token
blarinnande.c:54: error: parse error at end of input
make: *** [blarinnande.o] Error 1

> Process Exit Code: 2

så konstigt utrycker han sig:S
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

du har glömt semikolon här > PORTC^=_BV(PC2)

Ett tips... kolla igenom din kod 4 gånger... sen funderar du på vad kompilatorn egentligen säger... sen funderar du 15 gånger till... sen låter du det gå en dag eller 2 samtidigt som du kollar igenom koden och testar olika lösningar samt försöker förstå kompilatorn... sen... postar du här... vad säger du om det? :wink:

//Rille
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

okej.. men du vet hur det är med nya saker :wink:
allt ska hända nu..:D aja jag ska försöka behäska mig..
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Virr3>>

Kod: Markera allt

blarinnande.c:32: error: parse error before '}' token
blarinnande.c:40: error: parse error before '}' token
Talar om att du missat semikolon i denna kod.

Kod: Markera allt

blarinnande.c:54: error: parse error at end of input
Skall det inte vara: return(1);

Eventuellt kan du skriva:

Kod: Markera allt

void main(void)
{
//Din snitsiga kod här.
}
Förresten är det WinAVR du använder (har varit lite slö med att läsa alla poster i inlägget)?


Om ja, varför skriva såhär?

Kod: Markera allt

DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4);
När du kan skriva så här:

Kod: Markera allt

DDRC=0x0F;
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

visste inte om de... hehe

aja nu har jag grejat de..

Kod: Markera allt

#include <avr/io.h>
#include <avr/delay.h>
#include <inttypes.h>

int main()
{   
   
   uint16_t i, j;

   DDRC = _BV(PC0) | _BV(PC1) | _BV(PC2) | _BV(PC3) | _BV(PC4)    ; //Gör PC0, PC1, PC2, PC3 och PC4 till utgångar
   
   while (1)
   {
      PORTC |=  _BV(PC0); //gör PC0 hög
      PORTC &= ~_BV(PC1);//Gör PB1 låg
      PORTC &= ~_BV(PC2);//Gör PC2 låg
	  PORTC &= ~_BV(PC3);//Gör PC3 låg
	  PORTC &= ~_BV(PC4);//Gör PC4 låg
      for (i=0;i<2;i++)//loop
         {
          for (j=0;j<1000;j++)
           _delay_loop_2(1000); //pause
         PORTC ^= _BV(PC0);//Gör PC0 låg
         }

      PORTC &= ~_BV(PC0);//Gör PB0 låg
      PORTC |=  _BV(PC1);//Gör PB1 Hög
      for (i=0;i<2;i++)//loop
     {
          for (j=0;j<1000;j++)
            _delay_loop_2(1000);//pause
         PORTC^=_BV(PC1);
    	 }
         PORTC &=~_BV(PC1);//Gör PB1 låg
         PORTC |= _BV(PC2);//Gör PB2 hög
         for (i=0;i<2;i++)//loop
          {
              for (j=0;j<1000;j++)
              _delay_loop_2(1000);//Pause
             PORTC^=_BV(PC2);
	         }
		 PORTC &=~_BV(PC2);
		 PORTC |=  _BV(PC3);
		 for (i=0;i<2;i++)//loop
		 {
		      for (j=0;j<1000;j++)
		      _delay_loop_2(1000);//Pause
		     PORTC^=_BV(PC3);
	         }
		 PORTC &=~_BV(PC3);
		 PORTC |=  _BV(PC4);
  }
   return 1;
} 
så ser den ut om det är någon som undrar..

känns faktiskt riktigt bra första gången jag programerar något själv till avr:en.. lite stolt faktiskt.. nu ska jag löda fasst mitt kretskort som jag etsade i går..
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

nu känns det lite som att jag behärskar de här med lysioder..

har lust att göra någon motorstyrning. är detta på tok för svårt eller är det realistiskt att jag klarar detta? finns det något ställe som det finns fakta om detta?

om det är försvårt vad ska man försöka sig på?
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Ett tips kan vara att via några switchar styra hur lysdioderna blinkar/lyser så kan du kanske testa att styra hur starkt lysdioderna lyser mha PWM så att du känner dig trygg med det innan du drar igång motorstyrning.

Tips: När du bygger större projekt testa varje del för sig så att du VET att varje del fungerar på rätt sätt med in- och utdata.

Är det WinAVR du kör med?

Lycka till!
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

okej.. det låter fin fint..:D

vart kan jag hitta fler sheman på andra avrporgramerare? programeraren beter sig nämligen knepigt sedan skulle jag vilja ha en programerare till andra avr:en

hur funkar det med pwm? är det så att man tar bara och kortar ner pauserna så att jag får korta pulser eller?

vart kan jag läsa om pwm?
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Har suttit hela dagen med näsan i datablad och google under muspekaren... kom bland annat fram till detta:
gcctest

Tror det är gamla syntax:er etc men det borde ju inte vara några problem ;)

//Rille
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

tackar:D

någon som vet något bra schema till någon trevlig programerare jag kan använda?

tack på förhand

Viktor
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Håller fast vid att STK500 är klart bäst!!!!
Skriv svar