Hallo, ich benutze einen ATMega8 und den GCC. Jetzt möchte ich den 16 Bit Zählerstand ( H und L Byte) in ein Integer Wert umwandeln. Welche Möglichkeiten habe ich und welche ist die beste ? Die Suchfunktion hat mir leider nicht weitergeholfen. mit freundlichen Grüßen Michael
int v char valh char vall v=0; v = v | (valh<<8); v = v | vall; so in der art müsste es sein MfG eugen dischke
Oder einfach gar nicht erst den H- und L-Wert separat auslesen, sondern stattdessen gleich das 16-bit Pseudoregister: mycnt = TCNT1;
Danke, ich wußte gar nicht, das es ein 16 bit Pseudoregister gibt. Im Atmel Datenblatt steht unter der Registerzusammenfassung nichts. Ist es ein echtes Register,das im AVR vorhanden ist, oder ist es eine spezielle GCC Funktion ? Die Lösung ist natürlich besser, denn wenn sich zwischen dem einlesen der beiden Bytes durch einen Übertrag auf einem der beiden Bytes was ändert, dann stimmt der gesamte Wert natürlich nicht mehr. (Wenn der Timer weiterläuft). Michael
Das ist eine avr-libc/avr-gcc Implementierung. Daher auch ,,Pseudoregister'', physisch wird das natürlich in zwei 8-bit Registerzugriffe umgesetzt, anders geht's ja gar nicht.
und für die die gerne rechnen und nicht mit Bits schieben, das gleiche wie oben: v = valh * 256 + vall;
Roger Koller wrote:
> In welcher Library finde ich die Funktion mycnt
Soll das ein Aprilscherz sein?
Roger Koller wrote:
> In welcher Library finde ich die Funktion mycnt
Der war echt gut. schenkelklopf
Eigentlich nicht. Ich wollte diesen Ausdruck mycnt = TCNT1; bei mir als Variable definieren, aber leider kennt der Compiler diesen Ausdruck nicht. Ich wollte auch nur den 16bit Timer Zustand einfach so wie oben beschrieben uebernehmen und Ihn nicht einzeln zusammenbauen wie z.B. Timer_Gesamt=((TCNT1H*256)+TCNT1L); Gruss Roger
geht nur auf dem myAVR (sagt ja der Name)! Wenn du ein STK500 hast => Pech !
Auch gut, ich habe einen STK500. Habe also am 1. April Pech gehabt, aber ich kann ja die Funktion wie oben zusammensetzten. Gruss Roger
Scherz bei Seite, Link zur Seite: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#16-Bit_Register_.28ADC.2C_ICR1.2C_OCR1.2C_TCNT1.2C_UBRR.29 gruß hans
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.