#include <avr/io.h>
void pausenn(void);
int main(void)
{
//Kort rutin som vägrar avslutas...
pausenn();
//Endast för att generera fyrkantsvåg till oscilloskopet så jag kan se att något händer:
DDRD |= (1<<4);
while(1) {
PORTD |= (1<<4);
PORTD &= ~(1<<4);
}
return 0;
}
void pausenn(void) {
char i;
for(i=0;i<66;i++);
}
Mitt problem är att om jag sätter ett större tal än 66 i den understa loopen så hänger sig programmet där och går inte vidare... om jag har 66 eller lägre så fortsätter programmet glatt.
Du är säker på att problemet inträffar när i är större än 66 och inte 127? I annat fall skulle du kunna deklarera i som en "unsigned char" istället eftersom 128 i en "char" är detsamma som -127 iomed att den är signed.
Men du kanske redan vet detta och redan testat det.
Du har inte något interrupt igång? Jag vet inte riktigt hur det är på AVR men du borde väl ha någon global interrupt-flagga. Prova disablea den i koden, utifall...
Du gör endast paus innan du gå rin i loopen, borde du inte ha pausen i loopen? jag tror att du inte hinner se att den togglar bara.
Eller hur har du tänkt? jag kanske har missat hur du använder det...
EDIT: Nej det bör inte bero på det, du kollar ju på det i ociloscopet, då kan inte jag se något fel :(
Inte för att det borde har någon betydelse i det här fallet men prova att lägga in nyckelordet "volatile" innan "char i;". Asm-koden för båda fallen (under 66 och över 66) skulle, som JJ skrev, vara kul att se på.
Jag har aldrig använt atmega128 innan. Den har en kompabilitets-"fuse" för någon krets som heter 103. När jag stängde av den så fungerade allt perfekt...
Jag gick till och med så långt att jag lödde bort kretsen och testade med en ny. Den överlevde dock värmepistolen, ingen skada skedd. Slösade bara bort 4 timmar på felsökning.
/Johan
Edit: Avrlib är ju underbart, det tog mig 10 minuter att få en grafisk LCD att rita en cirkel. Efter 30 minuter till hade jag en animation med bilder ritade i paint. Om någon ska till Custom Motor Show på Elmia kan ni se den där.
Mig träffar du om du går dit på måndag (sista dagen), var vår monter är har jag inte ens kollat upp, jag avsade mig allt ansvar för planeringen (hade tillräckligt mycket att göra)
Vår bil är dock inte klar så vi har med en bil från tidigare år, vi visar bara smådelar från vår kommande bil.
strombom skrev:
Jag har aldrig använt atmega128 innan. Den har en kompabilitets-"fuse" för någon krets som heter 103. När jag stängde av den så fungerade allt perfekt...
Det felet har man ju inte gjort...
Glöm inte att kolla upp ITAG-en om du skall fippla med port F!!