WinAVR, tiny2313 och DS18B20
WinAVR, tiny2313 och DS18B20
Detta tycks vara en svår kombination.
All 1wire-kod jag har hittat använder funktioner som tiny2313 inte har stöd för (multiplikation osv).
Har någon lyckats lösa detta?
All 1wire-kod jag har hittat använder funktioner som tiny2313 inte har stöd för (multiplikation osv).
Har någon lyckats lösa detta?
"...som tiny2313 inte har stöd för (multiplikation osv)" ?????
En µC kan definitivt multiplicera! Det finns kanske ingen inbyggd matteprocessor men då löser man det i mjukvara!
PIC t.ex. har ju ett begränsat antal olika instruktioner och där går det helt fint att dividera och multiplicera.
Sen behöver 1Wire protokollet inget sånt, det behöver lite shiftning & EXOR osv men det är allt.
En µC kan definitivt multiplicera! Det finns kanske ingen inbyggd matteprocessor men då löser man det i mjukvara!
PIC t.ex. har ju ett begränsat antal olika instruktioner och där går det helt fint att dividera och multiplicera.
Sen behöver 1Wire protokollet inget sånt, det behöver lite shiftning & EXOR osv men det är allt.
> All kod jag har hittat använder multiplikation för att räkna ut delayer.
Om dom gör det så sker den multiplikationen med största sannolikhet när du kompilerar programmet, och inte av AVR:en, eftersom det troligtvis är konstanter som multipliceras.
> Och jag vet att en µC kan multiplicera i mjukvara, så alternativt söker jag hur fasen man får WinAVR att inte använda hårdvarufunktionen.
avr-gcc använder sig av hårdvaruinstruktionen om AVR:en stöder, annars sker det i mjukvara. Det är mao inget man behöver tänka på själv.
Om dom gör det så sker den multiplikationen med största sannolikhet när du kompilerar programmet, och inte av AVR:en, eftersom det troligtvis är konstanter som multipliceras.
> Och jag vet att en µC kan multiplicera i mjukvara, så alternativt söker jag hur fasen man får WinAVR att inte använda hårdvarufunktionen.
avr-gcc använder sig av hårdvaruinstruktionen om AVR:en stöder, annars sker det i mjukvara. Det är mao inget man behöver tänka på själv.
> Om dom gör det så sker den multiplikationen med största sannolikhet när du kompilerar programmet, och inte av AVR:en, eftersom det troligtvis är konstanter som multipliceras.
Ingalunda, multiplikationerna sker under gång i dessa funktioner. µCn ges endast en konstant i form av klockfrekvensen och räknar ut resten under drift.
> avr-gcc använder sig av hårdvaruinstruktionen om AVR:en stöder, annars sker det i mjukvara. Det är mao inget man behöver tänka på själv.
Det är testat, så sker inte.
Ingalunda, multiplikationerna sker under gång i dessa funktioner. µCn ges endast en konstant i form av klockfrekvensen och räknar ut resten under drift.
> avr-gcc använder sig av hårdvaruinstruktionen om AVR:en stöder, annars sker det i mjukvara. Det är mao inget man behöver tänka på själv.
Det är testat, så sker inte.
Ach, så går det när man förklarar olika saker på olika forum..
Jag får ett error när jag ska programmera µCn om att koden inte passar i aktuell µC. Det är verifierat att det beror på multiplikation eftersom att jag så fort jag lägger till multiplikation av en variabel i koden så får jag meddelandet. Multiplicerar jag konstanter så görs detta mycket riktigt i kompileringen.
Jag får ett error när jag ska programmera µCn om att koden inte passar i aktuell µC. Det är verifierat att det beror på multiplikation eftersom att jag så fort jag lägger till multiplikation av en variabel i koden så får jag meddelandet. Multiplicerar jag konstanter så görs detta mycket riktigt i kompileringen.
> Ingalunda, multiplikationerna sker under gång i dessa funktioner. µCn ges endast en konstant i form av klockfrekvensen och räknar ut resten under drift.
Det finns ingen anledning till varför det ska ske i runtime. Vad är det för kod du använder?
> Jag får ett error när jag ska programmera µCn om att koden inte passar i aktuell µC. Det är verifierat att det beror på multiplikation eftersom att jag så fort jag lägger till multiplikation av en variabel i koden så får jag meddelandet. Multiplicerar jag konstanter så görs detta mycket riktigt i kompileringen.
Det låter som en bug i så fall. Jag har nästan för mig att jag har läst om den buggen. Prova att ladda ner den senaste versionen av WinAVR, om du inte redan kör den.
Det finns ingen anledning till varför det ska ske i runtime. Vad är det för kod du använder?
> Jag får ett error när jag ska programmera µCn om att koden inte passar i aktuell µC. Det är verifierat att det beror på multiplikation eftersom att jag så fort jag lägger till multiplikation av en variabel i koden så får jag meddelandet. Multiplicerar jag konstanter så görs detta mycket riktigt i kompileringen.
Det låter som en bug i så fall. Jag har nästan för mig att jag har läst om den buggen. Prova att ladda ner den senaste versionen av WinAVR, om du inte redan kör den.
Problemet är hittat mha en väldigt duktig kompis.
Jag har varit helt off, det var nämligen inte riktigt så som jag trodde..
Visserligen hade det att göra med multiplikation, men inte på sättet som jag trodde. Problemet var helt enkelt att funktionerna för multiplikation ger så in i helvetes mycket kod så det får helt enkelt inte plats.
Har aldrig råkat ut för det innan, så jag tänkte inte ett dugg åt det hållet.
Jag har varit helt off, det var nämligen inte riktigt så som jag trodde..
Visserligen hade det att göra med multiplikation, men inte på sättet som jag trodde. Problemet var helt enkelt att funktionerna för multiplikation ger så in i helvetes mycket kod så det får helt enkelt inte plats.
Har aldrig råkat ut för det innan, så jag tänkte inte ett dugg åt det hållet.