-
Thread
Atmege Hardware UART und I/O
Hi Ich muß an einem ATmega den UART benutzen aber auch den TX-Pin "händisch" beeinflussen. Beides getrennt funktioniert. Aber sobald ich den UART initialisiere, werden Änderungen am Pin-Level nicht mehr umgesetzt. Im Datenblatt
Kann ich mir nicht vorstellen, und das Datenblatt, z.B. vom ATmega1284, scheint mir Recht zu geben: 'When the Transmitter is enabled, the normal port operation of the TxDn pin is overridden by the USART'
-
Thread
Wettbewerbe für kleinste Programme
archives/579 [c] int main(void) { // Prepare value to load into PINB asm volatile("LDI R16, 1"); // DDRB0 to Output asm volatile("OUT 0x17, R16"); while (1) { // It's Saturday: // Set bit 0 of PINB to toggle PB0 asm volatile("OUT 0x16, R16"); // Sunday has come asm volatile("OUT 0x16, R16"); // Loop JMP will take 2 cycles, // so we need 3 more... asm volatile ("NOP"); asm volatile ("NOP"); asm volatile ("NOP"); } }[/
-
Thread
Suche richtig miesen Drehimpulsgeber
sehe ich das auch so. Ich habe nichts außer die internen Pull-Ups. Ich habe hier etwas mit einem ATMEGA644 gemacht und arbeite mit Tabelle und Auswertung beider Spuren. Mit einem Akkuschrauber in höchster Stufe bringe ich das nicht aus dem Tritt. Die Spuren A und B liegen an PC0 und PC1. Ich kann in
Bucht wird gerade ein Waldorf Q Rack für sage und schreibe fast 1.700,00 gehandelt. Und das für einen 16 Stimmen-Klangerzeuger. Unfassbar.
-
Thread
Chipmangel überall Gesperrt
Gerichte ausgeliefert werden, und auch das nur, wenn es durch ein Gesetz ausdrücklich erlaubt ist (Art. 16 GG). Vor Einführung des europäischen Haftbefehls war die Auslieferung Deutscher an das Ausland durch das Grundgesetz generell verboten."
das es ähnlich auch für Asylsuchende gehandhabt > wird: Das hat nun überhaupt nichts mit Art 16 GG zu tun. Es wäre allerdings auch überraschend, wenn Du tatsächlich einmal etwas Sinnvolles abgesondert hättest.
-
Thread
DIY Fernsteuerung (Der Griff nach der EierlegendenWollMilchSau)
Programmierung und Verarbeitung läuft auf der Senderseite, dann wird es durch den "Flaschenhals" von 16 (oder mit Tricks 32) Servo-Kanälen auf den Empfänger übertragen. Empfängerseitig kann zwar sehr universell alles mögliche kaufbare verwendet werden, aber eben nur der Betrieb von Servos, oder nachfolgender
Platinchen, das z.B. 8 Lämpchen bedient, stelle ich mir eher einen ATTiny oder meinetwegen auch einen ATMega328 oder so vor. Controller mit CAN sind eher schon dicke Brocken.
-
Thread
[V] Atmel STK503 (Erweiterung für STK500) mit ATmega1280-16AU
Hallo, ich biete ein unbenutzes Aufsteckboard AVRATSTK503 für das Atmel STK500, um mit ATmega1280 (und andere, wie z.B. ATmega2560 und ATmega640) zu entwickeln, mit einem 100-pin ZIF-Sockel, wo man diese ICs einfach einsetzen kann. Ein ATmega1280-16AU sitzt dort auch noch im Sockel, wie
-
Thread
AD7177 SPI Kommunikation durch Schleifringe
Hallo Forum, es geht um AD7177 ADC und SPI-Kommunikation durch Schleifringe. Ich habe einen Atmega 1284, der mittels Flachbandkabel mit einer Platine verbunden ist, auf der ein 7177 sitzt. Das Flachbandkabel kann getrennt (DSUB-15) und beide Platinen dann an einem Rotationstisch betrieben werden
zuerst 47 Ohm, da hat's doch etwas geklingelt, also habe ich sie auf 420 erhöht. Treiber ist Atmega 1284. Ic dachte es funktioniert wie ein Schmitt-Trigger. Müssen die Flanken eine Mindeststeilheit besitzen?
-
Thread
Software Serial für mega644
Timer geht es nicht. Ich weiß nicht, welche Baudraten der TO verwenden will. Ich habe aber auf einem ATMega mit 16MHz schon mal acht Software-UARTs mit 9600 Bd realisiert - zugegebenermaßen nur für RX. Dabei wurde auf einen PCINT verzichtet und lediglich der 8-Bit-Port 28800 mal pro Sekunde über eine Timer-ISR
Frank M. schrieb im Beitrag #6622942: > Ich habe aber auf einem ATMega mit 16MHz schon mal acht > Software-UARTs mit 9600 Bd realisiert - zugegebenermaßen nur für RX. > Dabei wurde auf einen PCINT verzichtet und lediglich der 8-Bit-Port > 28800 mal pro Sekunde über
-
Thread
LED für 20 Sekunden blinken (Magnetschalter)
Sekunden 3. Magnet wird nach z. B. 4 Sekunden angedockt 4. Blinksequenz läuft in dem Fall noch weitere 16 Sekunden 5. Blinksequenz abgeschlossen. Kann man das Ganze ggf. mit Reedschaltern und Kondensatoren lösen? Ich möchte es gerne so einfach wie möglich halten.
> 3. Magnet wird nach z. B. 4 Sekunden angedockt > 4. Blinksequenz läuft in dem Fall noch weitere 16 Sekunden Habe den Post zu spät gesehen, also habe ich es doch missverstanden. Dann kannst du in meiner Beschreibung das UND-Gatter weglassen und den Oszillator mit dem Monoflop aus NANDs direkt
-
Thread
ATmega8U2 Quarz
habe ich mal nachgeschaut, beim Arduino wird ein 16MHz eingesetzt. Einerseits nutzen die den ATmega8U2 auch bei 5V während ich ihn bei 3,3V einsetze. Jetzt bin ich ein wenig verwirrt da man bei 16MHz ein nicht funktionieren des Oszillators riskiert. (
Die Transistoren schalten bei 5V eben schneller als bei 3V, und deswegen reicht es bei 5V noch für 16MHz, während bei 3V nur 8MHz drin sind. Wenn Dir das nicht reicht, musst Du halt was moderneres nehmen. Ein PIC24F64GB002 geht auch bei 16MHz, ein PIC32MX250F128B läuft mit 50MHz, und so viel teurer sind
-
Artikel
SensorLogger
Als Hardware kommen folgende Komponenten zum Einsatz: 868MHz Empfangsmodul mit PCB Antenne ATMEL ATmega1284P + ENC28J60 für 100base-T microSD Adapter Empfangsmodul. Für dem Empfang (und wenn mal will auch für das Senden) gibt es ein preiswertes 868MHz Modul RFM12. Es ist ein Universal ISM Band FSK Transceiver
ausgiebig beschrieben RFM12. Die Kommunikation erfolgt über eine gewöhnliche SPI Schnittstelle im 16-bit Transfer. Die Einstellmöglichkeiten sind so vielseitig, sodass man am Anfang schier verzweifelt, bis der Empfang dann endlich gelingen will. Daher hier mal die bei mir erfolgreiche Init-Sequenz:
-
Thread
32 GPIO Sender und Empfänger via Bus/Ethernet
dürfte die Programmierung an einem Tag erledigt sein. Als Board kann ich https://www.chip45.com/atmega644-usb-rs485-modul.html?language=de empfehlen, da ist der RS-485 Transceiver sogar mit drauf. Dieses auf eine Lochrasterplatine packen, die gewünschten I/O Anschlüsse und Überspannungsschutz (für die
udp_data_t buffer; while(1) { buffer.port0_15 = portE; buffer.port16_31 = portF; buffer.aIn; // send data err = sock.sendto(remoteAddr, &buffer, sizeof(buffer)); // receive data (receiver should echo data err = recvfrom
-
Thread
Schuhkarton beheizen
Hefeweizen. Dieses Gelumpe ist allerdings für einen normalen Menschen ungenießbar. Übrigens ist im Atmega328 selbst ein Tem,peratursensor enthalten, der für diesen Zweck bestimmt auch genüen würde.
die China-1602 plus I2C-Adapter bekommt man unter 3 Euro. Schade nur, dass man die zwei Zeilen zu je 16 Zeichen bei dieser Anwendung kaum sinnvoll befüllt bekommt. Was die Regelung angeht, würde ich vermutlich einen ChinaNano einsetzen, der A/D des ATMega328 ist ziemlich gut und kostet irgendwas um
-
Thread
Akausales Verhalten von Atmega328p
> Akausales Verhalten von Atmega328p Akausal? Was man hier für wunderschöne Worte finden kann...
Array wird genutzt. Was allerdings wohl scheppern *muss*, ist dieses: [c] uint8_t micBlock[16] = {0}; // schnipp for (i=0; i<lengthOfMessage; i++) { micBlock[(16+i)] = *(firstElementOfMessage+i); } [/c]
-
Thread
Rechnen mit große integer Zahlen beim ATMega328P
Hallo Leute, Ich versuche mich grad in C und die Entwicklung von Programmen für den ATMega328P einzuarbeiten. Jetzt habe ich ein kleines Problem mit dem Casten von großen Integer Zahlen bzw. mit dem Rechnen großer Integer Zahlen. Konkret geht es um diese beiden Zeilen: [c] uint16_t pwm1
Sebastian S. schrieb im Beitrag #6616457: > Wo um alles in der Welt gibt es bei einem ATMega Analogwerte? Ich hab z.B. eine Strommessung über mehrere Dekaden. Ein 16Bit-ADC wird in 4 Bereiche umgeschaltet. Für jeden Bereich erfolgt eine Kalibration mit float-Werten (Gain, Offset) im EEPROM
-
Thread
AVR Ardunino Nano ATMega328P Timer OVF (Overflow) Interrupt
zurückgesetzt) eine Endlosschleife durch den Int bauen. So oder so: (wenn es denn klappt) sind 64 Teile von 16MHz zu schnell um die LED blinken zu sehen.
ausgewählt? Deine ISR wird auf jeden Fall zu schnell aufgerufen, um die LED blinken zu sehen: 16E6Hz/16/256 = 976,5625Hz Du solltest den 1024 Prescaler verwenden -> 61 Hz und dann mittels Zählvariable auf Deinen Blinktakt teilen
-
Thread
Flachbandkabel mit PC verbinden
wird normal 16Bit (565RGB) parallel anzusteuern sein. Kann der PC von Hause aus erstmal nicht. Also Antwort in grob: "eher nicht ohne weiteres möglich" Alle anderen Antworten, wie "Heisskleber", "Antackern" zeugen
Axel R. schrieb im Beitrag #6613075: > wird normal 16Bit (565RGB) parallel anzusteuern sein Wodurch wird das für dich ersichtlich?
-
Thread
ATMega168: kein SPIF nach SPI-Transfer
transmission of data (r16) ldi r16,0xA5 ; Beispielwert out SPDR,r16 Wait_Transmit: ; Wait for transmission complete in r17, SPSR call DEBUG_BYTE ; Byte auf dem LA ausgeben (b7...
Hallo, das war es ! Der ATMega 8 belegt nur ein Wort pro Vektor, der ATMega 168 aber zwei. Bei den nicht benötigten Vektoren stand nur RETI. Dieser Befehl belegt aber nur ein Wort im Interrupt-Vektor. Ein NOP nach jedem RETI hat's
-
Thread
Woran kann man erkennen wie DRUCHGESCHREIBEN ein Controller schon ist?
Hallo Die atmega Controller setzte ich sehr Gerne ein. Habe einige Broads auf welchen ich erstmal teste bis alles so weit läuft wie gewünscht. dabei kann der Programmspeicher des Test Broad schon ein paar hundertmal
.100 (oder auch 1000...) Schreibvorgängen. Du brauchst also 1...3 Exemplare mehr vom jeweiligen atmega-µC, als du davon verbauen willst. Macht dich um 2...30 EU ärmer, aber erspart JEDE MENGE Ärger.
-
Thread
Programm läuft nur mit JTAG Fuse
JTAG wieder einschalte geht alles wieder (nur die PortC halt nicht). Woran kann das liegen? Atmega1284P / Atmelstudio7 / C
------------------------ Variablen uint8_t pos = 0; uint8_t Taster = 0; char Wert[10]; uint16_t Test = 0; uint8_t menuaktiv = 0; //Init //------------------------------------------------------------------------------------------------------------------------------------------------ Init
-
Thread
IGBT schon bei kleiner Last durchgebrannt
https://asset.conrad.com/media10/add/160267/c1/-/en/000160629DS01/datenblatt-160629-ixys-mcc95-16io1b-thyristor-scr-modul-to-240aa-1600-v-116-a.pdf
ne ich meine eher soetwas wie einen AVR ATMega https://www.mikrocontroller.net/articles/AVR-Tutorial In einer Sekunde macht der 16 Millionen Befehle, absolut ausreichend für deinen Anwendung. Mit der Wegmessung bekommst du ja raus wo sich
-
Thread
asm 16 Bit in BCD
method "shift-plus-3". I have written the sample code as below. The input hex value put in R17:R16, and this function will return R20:R19:R18 with the BCD value. [avrasm] ; r17:r16 = HEX value ; r20:r19:r18 = BCD value hexToBcd: push r16 push r17 push r21 push
ATmega328 in 17,41 µsec @16MHz (inkl. rcall, ret und einem I/O-Befehl zum Messen per Scope). In der usprünglichen Version sind es 23,17 µsec. Diese Zeiten sind unabhängig von der zu konvertierenden Binärzahl
-
Thread
USART RS485 Daten empfangen über ISR
avr/io.h> #include <avr/interrupt.h> #define USART0_BAUD_RATE(BAUD_RATE) ((float)(F_CPU * 64 / (16 * (float)BAUD_RATE)) + 0.5) void uart_init() { USART0.BAUD = (uint16_t)USART0_BAUD_RATE(9600); USART0.CTRLA = (1 << USART_RXCIE_bp) /* Receive Complete Interrupt */
ATtiny 25, 45, 85 14 Pins: ATtiny 24, 44, 84 20 Pins: ATtiny 261, 461, 861 28 Pins: ATmega 48, 88, 168, 328 40 Pins: ATmega 164, 324, 644, 1284 [/pre] Bei Chip45 gibt es kannst du das Crumb644 Board kaufen (https://www.chip45.com/atmega644-usb-rs485-modul.html?language=de). Es
-
Thread
Hilfe bei der Programmierung eines Adventskalenders
über die Zeit und der Temperatur. Ist er stabil genug, dann kann man das Feintunig der Zeit über den 16-Bit Timer machen. Da es bis zum Advent noch ein paar Tage sind, sollte der TO es einfach ausprobieren.
Beitrag #6609567: > beim MM5450 Wenn es schon ein großer Käfer sein soll, dann doch gleich einen ATmega32 o.ä., der genug freie Ausgänge für LEDs hat. Ich hätte dafür auch eine Schaltung, die ich aber nicht zeigen darf ;-)
-
Thread
AVR Assembler, Macro, Conditional mit Register
soll mit fetch_byte <irgendein Register> verwendet werden. [avrasm] .macro fetch_byte .if @0==r16 rcall read_byte .else push r16 rcall read_byte mov @0,r16 pop r16 .endif .endm [/avrasm] Die Subroutine read_byte liefert ein Byte in r16 zurück, wurde das Macro mit fetch_byte
mehr nicht. Z.B. mit scheint es viel bequemer, ldireg r7,0x1234567898765432 zu schreiben als ldi r16,0x32 mov r7,r16 ldi r16,0x54 mov r8,r16 usw.
-
Thread
Linux geht es noch antiquierter?
Linux-Kernels über Fehlverhalten in einer Load-Balancer-Funktion für die kommende Kernel-Version 3.16 informierten, warf Linus Torvalds selbst einen genaueren Blick auf die verfügbaren Daten. Denen ließ sich entnehmen, dass der verwendete Compiler (GCC 4.9) den Fehler verursachte, ... Die Compiler
was Faul. Man kann nichts anklicken. Naja das soll ja jetzt hier nicht das Thema sein. Mit Ubuntu 16.xxLTS hat jedenfalls noch alles funktioniert. Super 2 Stunden für nichts.
-
Thread
Atmega8A 1000ms != 1s ?
Hallo Forum, ich muss zum ersten mal nun einen Atmega8A selber programmieren.. Bisher nur PIC oder eigentlich nur Linux.. Nun mein Problem: 1. Ich hab den Code mit MPLABx geschrieben und wollte das dann mit meinem USBASP flashen.. Schonmal blöd
GPSDO.X.production.hex -U lfuse:w:0xBF:m -U hfuse:w:0xC9:m -U lock:w:0xFF:m -pm8 Zur Hardware: Es ist ein Atmega8A in einem BG7TBL GPSDO in dem ich das Fake Chine GPS Modul gegen ein original NEO-9N getauscht habe und daher nun den Atmega8 ebenfalls tauschen und neu programmieren muss. Der original war gelocked
-
Thread
Chipkiller-Schaltung: AT328-AU nach 4-6 Wochen instabil
Verschaltung darstellen soll, faul und unübersichtlich. Aber auch ohne Widerstände sollte der Atmega überleben. Ich frage mich eher warum AREF an VCC geht, den Fehler sieht man oft. Er hat einen Schaltregler drin, ob das bei den paar Milliampere die der Atmega zieht nicht kontraproduktiv ist
tatsächlichen echten Umsetzung. Insbesondere würde mich auch das tatsächliche Verhalten des Treibers im ATMega32 interessieren wenn die Ausgangsspannung nicht definiert auf dem 0 oder 1 Pegel liegt, sondern irgend wo dazwischen.
-
Thread
ATMEGA 32u4 Verbindungsprobleme ISP
Quarz ist folgendes verlötet: https://datasheet.lcsc.com/szlcsc/1811091415_HELE-Harmony-Elec-HSO321S-16MHZ-3-3V-40-85_C160456.pdf
Quarz ist folgendes verlötet: >https://datasheet.lcsc.com/szlcsc/1811091415_HELE-Harmony-Elec-HSO321S-16MHZ-3-3V-40-85_C160456.pdf Das ist kein Quarz sondern ein Quarzoszillator. Damit ist deine Schaltung falsch. Anschluss nach der Tabelle auf S.4. Der ATMega muss dann auf externen Takt gefused werden
-
Thread
ATmega4809 Temperatursensor
Hallo. Der ATmega4809 hat einen Internen Temperatursensor. Ich habe nun mehrmals im Datenblatt gesucht um Werte wie die Toleranz oder ein Diagramm bei wie viel Grad welche Spannung ausgegeben wird aber nichts gefunden
Exemplare, TU= 13.0 °C, 20 Messungen im 5 s-Abstand, vorkommende Werte: 1.: 15.0, 15.5 2.: 15.5, 16.1, 16.7 3.: 14.2 4.: 12.3, 12.9, 13.5
-
Thread
uin16_t ist/wird negativ bei 0x8000.
, Ich bin im Moment etwas ratlos, ich arbeite momentan daran mein altes Projekt auf Basis eines ATMega1284P auf mein neuen Prozessor (ATMega2560) zu "importieren". Im Moment teste ich mein 16 Bit ADC auf der Platine. Als ADC kommt ein ADS1115 zum Einsatz, welcher direkt als IC auf die Platine gelötet
Behr schrieb im Beitrag #6601993: > Der Format Specifier für unsigned int ist %u! Und für uint16_t ist er PRIu16.
-
Thread
Win10, WinAVR-20100110 und msys-1.0.dll
Allerdings stimmt was mit den defines für die AVR-CPU nicht. Soweit ich weiß, ist z.B. __AVR_ATmega324P__ oder __AVR_ATmega168P__ im avr-gcc hinterlegt. Compilieren tut es auch richtig, also wenn ich im makefile 'atmega324p' oder 'atmega168p' wähle, compiliert es auch für den entsprechenden Prozessor
verfrachtet. Hat auch funktioniert (mit den kleingeschriebenen Definitionen -> MCU mit Variable atmega324p z.B.). So habe ich das auch mal kennengelernt. Und jetzt allerdings reicht's mir schon wieder mit der SCHEISSE. Der Präprozessor funktioniert nämlich so wie gedacht, wenn man den __AVR_ATmega16
-
Thread
libvmcu - Virtual MCU Library
); return EXIT_SUCCESS; } [/c] [c] Output: SFR ID: 0 xref from 0x0112 (out 0x01, r16 ; IO[addr] <- R16) xref from 0x011c (out 0x00, r16 ; IO[addr] <- R16) SFR ID: 33 xref from 0x011f (in r16, 0x31 ; R16 <- IO[addr]) SFR ID: 38 xref from 0x0152 (out 0x3d, r28 ; IO[addr]
---- 0x0006 .... 0000 nop ; no operation true -> 0x0007 .... 0127 eor r16, r17 ; r16 <- r16 ^ r17 -------------------------------------------------------------------------------- 0x0007 .... 0127 eor r16, r17 ; r16 <- r16 ^ r17 -------------------------
-
Thread
Attiny2313 Timer16 Bit, Normal Mode, unsauber
das ansonsten machen könnte. Vorab gefragt, ist AS4 gleich A4 in der Rechnung? Weil ich wenn dann 16MHz habe. [c] #define F_CPU 10000000UL const uint16_t ICR = 256; const uint16_t PWM = F_CPU/ICR; const uint16_t A4 = 440; uint16_t A4_Phasendelta = 782; // (AS4/PWM*65536) uint16_t Phase; [/
#6600182 */ // Arduino Mega2560 #include <avr/io.h> #include <avr/pgmspace.h> const uint16_t ICR {256}; //const uint16_t PWM {F_CPU/ICR}; // 16MHz const uint16_t PWM {8000000UL/ICR}; const uint16_t TonA4 {440}; uint16_t A4_Phasendelta {(uint16_t)(65536UL*PWM/TonA4)}; uint16_t
-
Thread
Was ist L1 für ein Bauteil?
Markus M. schrieb im Beitrag #6595501: > Wenn es die QFN-Version vom Atmega ist (Endung -MU in der Beschriftung) > wird das (Aus-)Löten ohne Heißluft nicht so einfach sein. Laut Schaltplan ist es ja ein ATMEGA16U2-MU. Heißluft hab ich da nur woher krieg ich das Programm
noch benutzen lässt, nur eben über USB nicht mehr. Wenn ich es richtig verstehe, haben doch alle Atmega16U2 ab Werk schon einen Bootloader den man über USB nutzen kann. Somit müsste der TO doch "nur" einen frischen Atmega16U2 einlöten und - wenn er Glück hat - wird dieser dann bereits über USB wieder
-
Thread
MCP23017 funktioniert erst wie er soll nach Reset des µC
. Ein simples Testprogramm (s. main.c) führt bereits zum Fehlerfall: Ein flashen des ATMega führt dazu, dass bei Ausführung des main.c Programms keine LED leuchtet (normalerweise sollten alle 16 LED´s hintereinander kurz aufblinken). Nachdem ich den ATMega per Taster resette funktioniert
die Spannungsversorgung trenne und erneut anschließe, funktioniert auch nichts mehr - bis ich den ATMega wieder resette. Für den Fall, dass der ATMega mit Spannung versorgt ist, aber noch nicht resettet ist, habe ich mal einen LogicAnalyzer angeschlossen und die Kommunikation auf dem I²C Bus mitgeschnitten
-
Thread
USB-Serial Programmierboard für Atmel uC
ISP Firmware befindet sich also doch im Lieferumfang. Ja schon, aber damit machst du nicht den Atmega16U2 zum ISP Adapter, sondern den ATmega328.
dass der ATMega16U2 da so was besonders ist, dass das nicht geht?
-
Thread
Frage zu Externes SRAM(XMEM) und Atmel Studio 7
kurzen eine neue Platine anfertigen lassen um mein bestehendes Projekt auszuweiten wechsele ich vom ATMega1284P auf den ATMega2560. Der ATMega2560 ist auch auf der neuen Platine verbaut. Da der ATMega2560 nur über 8K SRAM anstatt wie sein kleiner Bruder über 16K und ich jetzt bei knapp 6,3 kB SRAM verbrauch
mit normalen Variablen testen da ich nicht so viel gebrauch von malloc mache. Also habe ich 3 uint16_t Arrays jeweils mit einer Größe von 4000 anlegt. Auch wieder werte zugeweisen und ausgelesen tat alles wenn ich zwischen zwei Arrays mal eins der anderen Highbits(A16-A18) auf HIGH sitze kommt für das
-
Thread
BME680 Berechnung Temperatur Luftfeuchtigkeit Druck Gas Fragen Initialisierung Assembler ASM ATmega8
Dieser Therm sieht in C ganz einfach aus: ((int32_t) temp_adc >> 3) in Assemler für eine 16Bit Zahl: LSR R17 / :2 ROR R16 LSR R17 / :2 ROR R16 LSR R17 / :2 ROR R16
Temperatur in der Integer Version heißt - welche Überraschung - calc_temperature() und liefert einen int16_t-Wert zurück.