Är det en Jula-mottagare du vill köpa?orvar-e skrev:Skaffade en fjärr och det funkade perfekt precis som utlovat.
Skulle dock behöva en till självlärande mottagare , nån som är villig att sälja.
Den nya fjärren verkar inte vilja jobba med de gamla mottagarna, de man manuellt ställer in en adress på baksidan.
JULA's fjärrströmbrytare
Re: JULA's fjärrströmbrytare
Re: JULA's fjärrströmbrytare
Hahahaha!!jesper skrev: Jag verkligen HATAR "utlänsk" kod, speciellt efter att ha varit tvungen att överta tusentals kodrader där
allt, kod och kommentarer, var på polska!
Du har rätt. Jag har verkligen bara blivit så trött på att leta fel och leta, så orken att tyda min egna engelska kod finns inte, det är knappt att det finns ork över till den svenska

Men okej, då med andra ord behöver jag läsa in mig i databladet för hur TCNT funkar.
Tackar så mycket för hjälpen.
Re: JULA's fjärrströmbrytare
Jesper.
Jag har letat och läst som en (kanske är att överdriva att säga tok). Jag har inte så mycket erfarenhet av AVR. Har svårt att hitta informationen i databladet, allt finns där. Men svårt att veta vad jag ska leta efter.
Det är några saker jag hoppas att du kan hjälpa mig att svara på, några är för att fatta själv vad jag gör. Så att jag lär mig något.
ICNC sätter du för att ta bort brus? eller "aktivera" du denna av någon annan anledning?
ICES1 är satt att reagera när den stiger, stämmer det? Har det någon avgörande betydelse eller är det bara najs.
Sista frågan. Var hittar du informationen för att räkna ut den siffra du har satt i kommentaren på koden?
Den här delen av koden förstår jag inte mycket. Men jag har uppfattat att du sätter räknaren till noll(TCNT1 är det rätt att kalla detta för en räknare). Efter ett visst antal klockcykler har den nått upp till det värde som är satt efter hur lång tid vi vill vänta. Men jag hänger inte alls med i hur jag ska räkna om jag har en processor som kör i 1mhz, frågan hänger ihop med ovan nämnda fråga om beräkningar. Jag misstänker om jag får gissa fritt att den öka med värdet ett för var 542e nanosekund när du kör med 14mhz, stämmer det?
Det hade varit riktigt skönt om du kunde förklara den biten för mig
Jag är väldigt nygammal på C och helt ny på AVR. Det hade varit riktigt snällt om du kunde förklara begreppen för mig. Känns som det är på väg att lossna, men att jag har kört fast i en liten lerpöl.
Tack för hjälpen på förhand.
Med vänliga hälsningar
David
Jag har letat och läst som en (kanske är att överdriva att säga tok). Jag har inte så mycket erfarenhet av AVR. Har svårt att hitta informationen i databladet, allt finns där. Men svårt att veta vad jag ska leta efter.
Det är några saker jag hoppas att du kan hjälpa mig att svara på, några är för att fatta själv vad jag gör. Så att jag lär mig något.
ICNC sätter du för att ta bort brus? eller "aktivera" du denna av någon annan anledning?
ICES1 är satt att reagera när den stiger, stämmer det? Har det någon avgörande betydelse eller är det bara najs.
Sista frågan. Var hittar du informationen för att räkna ut den siffra du har satt i kommentaren på koden?
Kod: Markera allt
TCCR1A = 0;
TCCR1B = (1<<ICNC1) | (1<<ICES1) | 2; // clk / 8 -> 542nS
Det hade varit riktigt skönt om du kunde förklara den biten för mig
Kod: Markera allt
void twait(uint32_t us)
{
us *= 1000;
us /= TIMERRESOLUTION;
TCNT1 = 0;
while (TCNT1 < (us & 0xFFFF));
}
Tack för hjälpen på förhand.
Med vänliga hälsningar
David
Re: JULA's fjärrströmbrytare
Jag har faktiskt ingen aning om hur ICNC1 och ICES1 bitarna fick smugit sig in där. Jag kanske hade testat något annat med samma bas-kod.
Hursomhelst har de inget där att göra, då Input Capture inte används alls.
Räknaren används endast som en simpel upp-räknare.
Sär här ska det se ut i starten av main:
De 542 nS kommer av 1 / (CLUCLOCK /
, där 8 är prescalervärdet, altså 1/1843200 = 542ns
Om du endast kör processorn på 1MHz, får du altså en timerupplösning på 1/(1000000/8) -> 1/125000 = 8 us
Det funkar, men om du vill ha lite bättre upplösning, sätter du prescalern till 1 istället, dvs:
Då får du 1/1000000 = 1 us upplösning.
Glöm inte ändra konstanten TIMERRESOLUTION i koden.
Hursomhelst har de inget där att göra, då Input Capture inte används alls.
Räknaren används endast som en simpel upp-räknare.
Sär här ska det se ut i starten av main:
Kod: Markera allt
TCCR1A = 0;
TCCR1B = 2; // clk / 8 -> 542nS

Om du endast kör processorn på 1MHz, får du altså en timerupplösning på 1/(1000000/8) -> 1/125000 = 8 us
Det funkar, men om du vill ha lite bättre upplösning, sätter du prescalern till 1 istället, dvs:
Kod: Markera allt
TCCR1B = 1; // clk / 1 , datasheet pg. 131
Glöm inte ändra konstanten TIMERRESOLUTION i koden.
Re: JULA's fjärrströmbrytare
Tusen tack för hjälpen Jesper.
Du skriver att du räknar ut en timeresolution i uS? I din kod står den angiven som nS. Betyder det att jag behöver multiplicera med 1000?
eller är det så att det är vad den multiplikationen i twait() funktionen syftar till, att omvandla till nS menar jag.
Jag har testat med prescale och utan. kört med timerresolution 8 och 1. det märkliga är att det fortfarande inte funkar.
Jag har testat att köra med din kod också och använt en resolution på 8 (men det tar riktigt lång tid att sända ett paket i både min och din kod). Jag får ingen respons från mottagaren. Börjar misstänka att mcun orsakar något som jag inte räknar med.
*Uppdatering*
Är det några inställningar på min MCU som jag måste göra? Jag har en atmega 48a. 8MHz men kör med chkdiv 8.
Finns det några enkla fel man kan ha råkat göra? Jag kör med en kjell o co sändare, alltså inte en sändare som följer med fjärrströmbrytaren.
Jag vet att det genereras en signal, jag har monterat upp en kjell o co mottagare som kan kvittera. Dioderna blinkar lika på båda sidor
Börjar snart gråta, hur svårt kan det hära egentligen vara.
Förstår att det kan vara jäkligt svårt att hjälpa mig över ett forum på det här viset. Men du ska ha ett stort tack för det du kan bidra med.
Hoppas jag inte bryter några forum-regler genom att spamma så här i tråden.
Du skriver att du räknar ut en timeresolution i uS? I din kod står den angiven som nS. Betyder det att jag behöver multiplicera med 1000?
eller är det så att det är vad den multiplikationen i twait() funktionen syftar till, att omvandla till nS menar jag.
Jag har testat med prescale och utan. kört med timerresolution 8 och 1. det märkliga är att det fortfarande inte funkar.
Jag har testat att köra med din kod också och använt en resolution på 8 (men det tar riktigt lång tid att sända ett paket i både min och din kod). Jag får ingen respons från mottagaren. Börjar misstänka att mcun orsakar något som jag inte räknar med.
*Uppdatering*
Är det några inställningar på min MCU som jag måste göra? Jag har en atmega 48a. 8MHz men kör med chkdiv 8.
Finns det några enkla fel man kan ha råkat göra? Jag kör med en kjell o co sändare, alltså inte en sändare som följer med fjärrströmbrytaren.
Jag vet att det genereras en signal, jag har monterat upp en kjell o co mottagare som kan kvittera. Dioderna blinkar lika på båda sidor


Förstår att det kan vara jäkligt svårt att hjälpa mig över ett forum på det här viset. Men du ska ha ett stort tack för det du kan bidra med.
Hoppas jag inte bryter några forum-regler genom att spamma så här i tråden.
Senast redigerad av drobban 15 november 2010, 22:50:21, redigerad totalt 1 gång.
Re: JULA's fjärrströmbrytare
Du bör nog göra skillnad på milli och mega. Även om folk kan gissa av sammanhanget vad du menar.
8mHz är en en svängning varannan minut.
8mHz är en en svängning varannan minut.
Re: JULA's fjärrströmbrytare
Konstanten TIMERRESOLUTION ska anges i ns, annars blir det fel.
Så om du kör processorn på 1MHz, ska du altså ange 1000.
Och din timersetup ska vara:
Även om din kod såg ok ut, vore det ju mycket enklare om du använde den kod jag skrivit, och som jag vet fungerar.
Den är ju skriven för att det ska vara enkelt att modifiera för skillnader i timing och pinout.
Du ändrar då bara timer-setup och TIMERRESOLUTION (och eventuelt pin), och det ska funka rakt av.
Det är lite svårt när du har en helt annan kod.
Så om du kör processorn på 1MHz, ska du altså ange 1000.
Och din timersetup ska vara:
Kod: Markera allt
TCCR1A = 0;
TCCR1B = 1;
Den är ju skriven för att det ska vara enkelt att modifiera för skillnader i timing och pinout.
Du ändrar då bara timer-setup och TIMERRESOLUTION (och eventuelt pin), och det ska funka rakt av.
Det är lite svårt när du har en helt annan kod.
Re: JULA's fjärrströmbrytare
Tjo Jesper.
Anledningen till att jag försökte skriva en egen från början, var främst för att fatta vad du har gjort.
Jag la ner projektet när jag inte kom vidare och försökte lära mig att skapa "signaler" över ir, då vart jag tvingad in i timers igen.
Efter att jag sedan la ner projektet med IR kände jag att jag nu fattar hur TCNT funkar. Så jag kopierade din kod nu och mixtrade lite med den, ändrade tidsupplösningen så att den passar med min 8Mhz AVR.
Nu funkar det och nu vet jag varför det inte funkade för mig. 2 saker, jag försökte åter igen använda _delay_us och _ms. Precis som du säger, så blir det något fel i tid på hur länge den ska vänta. Är nog inte tänkt att _delay_us och _ms ska användas på det viset och det andra är att jag inte skickar "meddelandet" 3gånger.
Tack för hjälpen Jesper. Tack vare dig har jag nu lärt mig en hel del när det gäller AVR och till sist fick jag tillbaka glöden efter alla misslyckanden.
JAG ÄR GRYMT GLAD!
Anledningen till att jag försökte skriva en egen från början, var främst för att fatta vad du har gjort.
Jag la ner projektet när jag inte kom vidare och försökte lära mig att skapa "signaler" över ir, då vart jag tvingad in i timers igen.
Efter att jag sedan la ner projektet med IR kände jag att jag nu fattar hur TCNT funkar. Så jag kopierade din kod nu och mixtrade lite med den, ändrade tidsupplösningen så att den passar med min 8Mhz AVR.
Nu funkar det och nu vet jag varför det inte funkade för mig. 2 saker, jag försökte åter igen använda _delay_us och _ms. Precis som du säger, så blir det något fel i tid på hur länge den ska vänta. Är nog inte tänkt att _delay_us och _ms ska användas på det viset och det andra är att jag inte skickar "meddelandet" 3gånger.
Tack för hjälpen Jesper. Tack vare dig har jag nu lärt mig en hel del när det gäller AVR och till sist fick jag tillbaka glöden efter alla misslyckanden.
JAG ÄR GRYMT GLAD!