Noxy Skrevet 24. mars 2006 Forfatter 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 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 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 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 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 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 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å