moin moin, ich versuche gps daten über einen attiny85 auszulesen. Dazu verwende ich einen Timer Interrupt, der alle 208 us aufgerufen wird (Test mit Oszi). Versuche über folgende Quellcode mir anzeigen zu lassen, wann ein neuer GPS Satz angekommen ist (Laut Navi-Testsoftware werden 5 versch. Sätze pro Sekunde empfangen. Also sollte meine LED 5 mal pro sek. blinken. Sie blinkt aber ziemlich willkürlich (manchmal 2 mal pro sek. manchmal gar nicht). Hoffe, dass mir jmd. meine Fehler erklären kann. Gruß Sascha ISR(TIMER0_COMPA_vect) { cli(); TIFR = (1<<OCF0A); if(laenge == 0) USIBR = 0; if(laenge < 8) { laenge++; USIBR = (USIBR << 1); if(PINB & (1<< PB0)) USIBR |= 0x01 ; else USIBR &= ~0x01; } else { gps = USIBR; laenge = 0; if(gps== '$') PINB |= (1 << PB3); USIBR = 0; } sei(); }
du kannst doch nicht einfach im Timer die RS232 abfragen, du musst doch wengisten prüfen ob die vorliegen. Auch eine Sei und ein cli hat nichts in der ISR zu suchen. Vergiss den code und fang noch mal von vorne an.
Hi >Darum musst du dich nicht kümmern, wenn du den UART verstanden hast.... Der ATTiny85 hat aber keine USART, sondern ein USI. Und damit funktioniert es nur mit Timer. http://www.atmel.com/Images/doc4300.pdf. MfG Spess
Was spricht dagagen einen AVR mit UART zu verwenden? Muss man's als Anfaenger immer mit dem Schwierigsten versuchen? Der kleinste mit UART ist der Tiny2313. Versuch's damit. Es ist immer noch schwierig genug.
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.