Sida 8 av 11

Postat: 11 september 2004, 08:52:37
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 ;)

Postat: 11 september 2004, 12:19:09
av Virr3
problemet är fixat:D:D det var någon kallödning någonstans..

Postat: 12 september 2004, 18:46:00
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å?

Postat: 12 september 2004, 18:49:15
av rickeboy
Och åter igen glömde du sätta in vad komilatorn säger...

Ska det verkligen stå return 1; ?

//Rille

Postat: 12 september 2004, 18:51:55
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

Postat: 12 september 2004, 19:08:13
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

Postat: 12 september 2004, 19:11:37
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..

Postat: 12 september 2004, 19:33:32
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;

Postat: 12 september 2004, 19:35:48
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..

Postat: 12 september 2004, 21:49:28
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å?

Postat: 13 september 2004, 12:01:03
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!

Postat: 13 september 2004, 14:52:39
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?

Postat: 13 september 2004, 15:05:13
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

Postat: 13 september 2004, 15:18:20
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

Postat: 13 september 2004, 16:05:07
av MicaelKarlsson
Håller fast vid att STK500 är klart bäst!!!!