Hey leute bräuchte mal eure Hilfe muss ein paar Pogramme für den ATMEGA 32 schreiben gibt es jemanden im Raum Frankfurt am Main der mir helfen kann natürlich mit Entschädigung **
ich müsste so paar pogramme schreiben wie Schreiben Sie C-Programme für den ATmega 32 (fcpu = 16 MHz), das einen Infraschallton von 5 Hz erzeugt. Der Lautsprecher sei mit Pin PD5 verbunden. Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt. Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt. Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register. Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register. Verwenden Sie Timer 1 im Fast - PWM - Mode.
genau müsste es halt auch verstehen was da genau abläuft
MCTatmega schrieb: > Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt. Prescaler auf 8, in main() TCNT1 auf >= 20000 prüfen, falls ja, TCNT1 = 0, Toggle Pin. > Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt. IntCnt = 0, Prescaler auf 1, beim zweiten OVFLW_INT TCNT1 auf 36607 stellen, beim nächsten OVFLW_INT Toggle Pin und IntCnt = 0. > Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register. Prescaler auf 8, Timer 1 MODE auf 12 stellen, ICR1 auf 19999 stellen, beim INT Toggle Pin. > Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register. Prescaler auf 8, Timer 1 MODE auf 4 stellen, OCR1A auf 19999 stellen, beim INT Toggle Pin. > Verwenden Sie Timer 1 im Fast - PWM - Mode. Mindestens eine Aufgabe solltest du alleine machen. ;)
:
Bearbeitet durch User
Hey Vielen Dank für die Hilfe ich gib mir mühe :D
MCTatmega schrieb: > Hey > Vielen Dank für die Hilfe > ich Ooops. Ich habe die ganze Zeit mit 50Hz, anstatt mit 5Hz gerechnet. Kommst du trotzdem klar mit der Aufgabe ?
:
Bearbeitet durch User
es gehhhht kanst du mal bitte eine Aufgabe mit Kommentaren an der Seite lösen was genau welcher befehl ausführt
MCTatmega schrieb: > kanst du mal bitte eine Aufgabe mit Kommentaren an der Seite lösen was > genau welcher befehl ausführt Ich versuch's mal: Zuerst muss man auf 100ms kommen, weil 5Hz = 200ms = alle 100ms LED toggeln, OK ? > Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) ohne Interrupt. Das einzige, was man hier machen kann, da ohne Interrupt, ist den TCNT1 standig im Loop zu prufen. Ist nicht auf us genau, aber bei 5Hz... Also: Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us. 100000us / 4us = 25000. Demzufolge: Prescaler auf 64, in main() TCNT1 auf >= 25000 prüfen, falls ja, TCNT1 = 0, Toggle Pin. > Verwenden Sie Timer 1 im Überlauf - Mode (Normal - Mode) mit Interrupt. Hier gilt es: Prescaler auf 8 = 16MHz / 8 = 2MHz = 0.5us Überlauf = 65536 * 0.5 = 32768us 3 * 32768 = 98304us, 100000 - 98304 = 1696us Fehlen 1696us, also wird beim dritten OVRFLW_INT TCNT1 auf 65536 - (1696*2) - 1 gestelt, das ergibt 63839. Demzufolge: In der ISR eine static variable deklarieren:
1 | static uint8_t IntCnt; |
Prescaler auf 8, bei jedem ISR Eintritt IntCnt erhohen, beim dritten OVFLW_INT TCNT1 auf 63389 stellen, beim nächsten OVFLW_INT Toggle Pin und IntCnt wieder auf Null stellen. > Verwenden Sie Timer 1 im CTC -Mode mit ICR1 als CCR - Register. Das ist einfach: Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us. 100000us / 4us = 25000. Demzufolge: Timer 1 auf MODE 12 stellen, ICR1 auf 24999 stellen, Toggle Pin in der ISR. > Verwenden Sie Timer 1 im CTC - Mode mit OCR1A als CCR - Register. Das ist auch einfach: Prescaler auf 64 = 16MHz / 64 = 250KHz = 4us. 100000us / 4us = 25000. Demzufolge: Timer 1 auf MODE 4 stellen, OCR1A auf 24999 stellen, Toggle Pin in der ISR. > Verwenden Sie Timer 1 im Fast - PWM - Mode. Mindestens eine Aufgabe solltest du alleine machen. ;)
:
Bearbeitet durch User
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.