Sida 1 av 3

En AVR som inte gör som den blir tillsagd

Postat: 29 januari 2008, 18:38:30
av VelcroMan
Hej, jag har en ATmega168 som jag skrev ett mycket enkelt "program" till. Den ska använda PC 5 pinnen för att blinka en LED. Men, den blinkar inte. (Pinnen ändrar inte spänning överhuvudtaget)

Jag använder Bascom AVR för koden och avrdude för programmeringen. Och en "DAPA" programmerare.

Vad kan vara fel? Det är inte koden (vad jag vet) utan min AVR som det är fel på. Den får 4.4V På VCC & AVCC och båda GND går till minus.

Kod: Markera allt

$regfile "m168def.dat"

Config PINC.5 = Output    'PINC.5 är satt som output

Do

Set PINC.5    'Sätt pinnen hög

Waitms 5000    'Vänta 5000ms

Reset PINC.5    'Sätt pinnen låg

Waitms 5000    'Vänta 5000ms

Loop    'Börja om från "Do"
Edit: Skrev us istället för ms
Edit: Kommenterade koden lite :P

Postat: 29 januari 2008, 18:43:29
av hh
Är Waitus i mikrosekunder? Vad är spänningen på pinnen?

Edit: Om spänningen ligger mellan 0 och Vcc kan det hända att den gör just som den skall, lite snabbt bara.

Postat: 29 januari 2008, 18:45:54
av VelcroMan
ms ska det stå, inte us. Min multimeter växlar mellan 0.00 och 0.01 volt. (Inte vart 5:e sekund) Utan oregelbundet.

Postat: 29 januari 2008, 18:51:35
av hh
Justdetja, jag läste början lite slarvigt.

Språket känner jag inte till så jag vågar mig inte på någon vidare gissning. Du har väl Reset rätt kopplad?

Har du fått något annat program att köra?

Postat: 29 januari 2008, 18:59:02
av VelcroMan
Reset ska gå till VCC eller hur är det?

Postat: 29 januari 2008, 19:09:00
av hh
Jo, via ett motstånd om du använder dapa.

Postat: 29 januari 2008, 19:12:05
av VelcroMan
Reset sitter till paralellportens pin 16.

Postat: 29 januari 2008, 19:21:15
av RDX*
Har du ställt in klockan?

Postat: 29 januari 2008, 19:26:30
av VelcroMan
Klocka? Vilken klocka? :P

Menar du kristallen? Anger man inte så använder den standard

Postat: 29 januari 2008, 19:55:14
av björn
Har du tetstat att *enbart* sätta pinnen hög? Funkar det isåfall?
Har du angett om pinnen är in eller utport? Var och hur i så fall?

EDIT: glöm det om utgång, det hade du ju med klart och tydligt.... Inte van vid språket...

EDIT2: Googlade på "bascom blinka led" och fick se :
Config Portb = Outputout 'set port B as output

Do ' eternal loop
Portb.0 = 1 ' make portB.0 high
Waitms 500 ' wait 500ms
Portb.0 = 0 ' make Portb.0 Low
Waitms 500 'wait 500ms
Loop
Ser inte riktigt likadant ut som ditt, jag har dock ingen aning om vilket som är rätt eller om båda är det.

Postat: 29 januari 2008, 19:58:09
av Zyxel615
Berätta först ordentligt hur du har kopplat. Finns det avkopplingskondensatorer? Vad är det för spänningskälla? Vad har du för motstånd mellan Reset och VCC?

Och *kolla* att alla fuse-bitar är korrekt inställda.

Postat: 29 januari 2008, 20:01:49
av VelcroMan
björn skrev:Har du tetstat att *enbart* sätta pinnen hög? Funkar det isåfall?
Har du angett om pinnen är in eller utport? Var och hur i så fall?

EDIT: glöm det om utgång, det hade du ju med klart och tydligt.... Inte van vid språket...

EDIT2: Googlade på "bascom blinka led" och fick se :
Config Portb = Outputout 'set port B as output

Do ' eternal loop
Portb.0 = 1 ' make portB.0 high
Waitms 500 ' wait 500ms
Portb.0 = 0 ' make Portb.0 Low
Waitms 500 'wait 500ms
Loop
Ser inte riktigt likadant ut som ditt, jag har dock ingen aning om vilket som är rätt eller om båda är det.
Ska testa. Men jag ser ingen skildnad förutom att PB.0 används istället för hela PC. Och att tiden är annorlunda.

Postat: 29 januari 2008, 20:02:52
av VelcroMan
Zyxel615 skrev:Berätta först ordentligt hur du har kopplat. Finns det avkopplingskondensatorer? Vad är det för spänningskälla? Vad har du för motstånd mellan Reset och VCC?

Och *kolla* att alla fuse-bitar är korrekt inställda.
Faktiskt så har jag varken kondensatorer eller motstånd någonstans (förutom LEDen) Jag vet att jag borde... :P

Oj.. dubbelpost

Postat: 29 januari 2008, 20:06:15
av björn
Du inte bara borde.... fixa det så kan vi se om vi kan hjälpa dig sen(om det behövs).

Postat: 29 januari 2008, 20:10:49
av Zyxel615
Börja med 10 kΩ resistans mellan VCC och Reset samt 10 nF kapacitans över matningsspänningen så skulle jag tro att det hela löser sig.