Noxy Skrevet 24. mars 2006 Forfatter Rapporter Del Skrevet 24. mars 2006 (endret) Vi har nå så smått begynt å programmere, og teste dette på et lite oppsett med 8 brytere og 8 lysdioder. Problemet ligger nå i at samtlige lysdioder lyser, uansett hvilken bryter vi skulle finne på å aktivere. Gode forslag og velmenende råd mottas med takk. EDIT: MvH Iceman™, som ble satt til å skrive, da Noxy heller ville sitte og sove. EDIT: Koden vi har programmert AVRen med: #include <avr/io.h> #include <avr/iom16.h> int main(void) { DDRD = 0x00; //portD settes til innganger - fra HAUK PORTD = 0x00; //portD verdi 00 DDRC = 0xFF; //portC settes til utganger - til buffer IC PORTC = 0x00; //portC verdi 00 char InnData = PIND; //lesing av verdi portD -> PIN X //HENTE OG SENDE DATA while (1) //hovedprogramløkke { InnData = PIND; //leser ny verdi fra portD PORTC = InnData; //setter utdata på C lik inndata på D } return 1; } Endret 24. mars 2006 av Noxy Lenke til kommentar
Dr_VingTor Skrevet 24. mars 2006 Rapporter Del Skrevet 24. mars 2006 hmm. ser nå ut som koden simulerer rett. kan hende det har noe med kretskonstruksjonen deres å gjøre. hvordan har dere koblet? når dere trykker på bryteren, blir pinnen høy eller lav? kan hende det har med pull-up motstander i avren å gjøre også se side 49-50 i databladet. Lenke til kommentar
ddd-king Skrevet 25. mars 2006 Rapporter Del Skrevet 25. mars 2006 Koden din ser bra ut den. Men prøv dette og se om det fungerer. initialiser "inndata" med dette isteden for: volatile char innData = PIND; Tror at det skal fungere etter denne forandringen Lenke til kommentar
ddd-king Skrevet 25. mars 2006 Rapporter Del Skrevet 25. mars 2006 Tror at lysene lyser konstant fordi AVR'en bruker en cached verdi som ble satt til null ved char InnData = PIND (=0x00) Når du kjører whileløkka henter AVRen verdien til InnData som ligger i cachen. Ved å sette "volatile" foran "char InnData" tvinger du AVRen til å lese inn ny verdi hver gang den trenger verdien i "InnData" Lenke til kommentar
Noxy Skrevet 31. mars 2006 Forfatter Rapporter Del Skrevet 31. mars 2006 (endret) prøvde å bruke "volatile char innData = PIND;" uten at det ga noe annet resultat. Skal lese om pull-up motstandene nå, så får vi se hvordan det går utover dagen. edit: legger ved tegningen av testkortet vårt. Endret 31. mars 2006 av Noxy Lenke til kommentar
Dr_VingTor Skrevet 12. april 2006 Rapporter Del Skrevet 12. april 2006 (endret) trur jeg vet hva problemet er. avren kan ha pull-up, men har ikke pull-down. så på inngangen (knappene deres) vil dere alltid ha +5volt hvis dere bruker pull-up, og dere vil ha +5volt eller en uspesifisert spenning når knappen ikke er inntrykt om dere ikke bruker pull-up. De kan hende at den uspesifiserte spenningen tolkes som +5 volt, hvilket vil føre til at alle leddene lyser konstant. 2 løsninger: bruk intern pull-up på inngangene og koble bryterne til jord i stede for +5volt (og litt omskriving i koden siden alt blir omvendt, 0 blir 1 osv) eller: koble en motstand mellom hver inngangspinne på avren og til jord som gir en pull-down slik at du sikrer at pinnen er koblet til jord når knappen ikke er trykket inn. (har vært i USA så svaret kommer kanskje litt sent...) Endret 12. april 2006 av Dr_VingTor Lenke til kommentar
lceman™ Skrevet 18. april 2006 Rapporter Del Skrevet 18. april 2006 Vi har ikke hatt tid til å jobbe med prosjektet noen uker nå, men det virker som om du kan risikere å bli en reddende engel her. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå