Skocz do zawartości

Turboasm

Użytkownicy
  • Zawartość

    31
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O Turboasm

  • Ranga
    3/10
  • Urodziny 06.11.1989

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Kleczew
  1. Jak zrealizować pomiar czasu pomiedzy impulsami ? Dodam że impulsy są zbierane z czujnika indukcyjnego zamocowanego nad kołem zembatym z około 100 zębami. Zależy mi na bardzo dynamicznym pomiarze gdyż zliczanie impulsów w czasie nie zdaje egzaminu gdyż silnik zmienia prędkość obrotową bardzo dynamicznie od 500 - 7000 obrotów na minutę. Nie musi być to dokładne nie co 1 obr/m a np 100 200. Czy w bascomie intrukcja PULSEIN dała by radę czy moze znajdzie sie jakies inne rozwiązanie ?
  2. Attiny13 pracuje na 9.6 MHz na 100%
  3. Jak zrobic żeby program dzialał szybciej ? Zliczam impulsy włącznikiem hallotronowym. Program działa z opóźnieniem. $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portd.3 , Db6 = Portd.2 , Db7 = Portd.1 , E = Portb.7 , Rs = Portd.7 Config Lcd = 16 * 2 Dim Wynik As Long Config Timer0 = Counter , Edge = Rising Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Start Timer1 Cls Do Timer0 = 0 Start Timer0 Waitms 500 Stop Timer0 Wynik = Timer0 * 120 Cls Lcd Wynik ; " obr/min" Cursor Off Pwm1a = Wynik / 27 Pwm1b = 255 - Pwm1a Loop End po prostu program nie może zdążyć za silnikiem. Da sie to w jakiś inny sposób zrealizować ?
  4. dzięki za pomoc ale pozostaje mi tylko problem który licznik zaprząc do zadania. Czy timer1 do zliczania impulsów czy timer2 ?
  5. Aby nie zakładać nowego tematu odgrzewam ten. Jak rozwiązać problem aby po wciśnięciu przycisku zmienna X została zapamiętana w eeprom ( P ). $regfile = "attiny13.dat" $crystal = 1200000 Config Pinb.0 = Output Config Pinb.3 = Input Portb.3 = 1 Config Pinb.4 = Input Portb.4 = 1 Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down Start Timer0 Dim X As Byte Dim P As Eram Byte X = 50 Do If Pinb.4 = 0 Then Waitms 10 X = X + 10 End If If Pinb.3 = 0 Then Waitms 10 P = X End If Pwm0a = X Loop End Aby program po włączeniu zasilania nie wracał do ustawienia X = 50.
  6. Czyli tą zmianną bym musiał zerować po każdym przejściu programu. Jakoś inaczej jeszcze da radę to zrobić ?
  7. Może zapytam inaczej. Czy poniższy kod jest poprawny ? Chodzi o to żeby było zapętlone select case żeby na bieżąco zmieniało wypełnienie pwm w zależności od obrotów. $crystal = 4000000 $regfile = "m8def.dat" Dim Wynik As Long Config Timer2 = Counter , Edge = Rising Config Pinb.1 = Output Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down Cls : Lcd "Obrotomierz" : Wait 1 Do Start Timer1 Timer2 = 0 Start Timer2 Wait 1 Stop Timer2 Wynik = Timer2 * 60 Cls Lcd "P: " ; Wynik ; " obr/min" Cursor Off Select Case Wynik Case 0 To 1000: Do Pwm1a = 250 Pwm1b = 0 Loop Case 1001 To 2000: Do Pwm1a = 220 Pwm1b = 35 Loop Case 2001 To 3000: Do Pwm1a = 190 Pwm1b = 70 Loop Case 3001 To 4000: Do Pwm1a = 160 Pwm1b = 105 Loop Case 4001 To 5000: Do Pwm1a = 90 Pwm1b = 180 Loop Case 5001 To 6000: Do Pwm1a = 30 Pwm1b = 210 Loop Case 6001 To 7000: Do Pwm1a = 0 Pwm1b = 250 Loop End Select Loop End
  8. Mam kod obrotomierza: $crystal = 4000000 $regfile = "m8def.dat" Dim Wynik As Long Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0 Config Timer1 = Counter , Edge = Rising Cls : Lcd "Obrotomierz" : Wait 1 Do Timer1 = 0 Start Timer1 Wait 1 Stop Timer1 Wynik = Timer1 * 60 Cls Lcd "P: " ; Wynik ; " obr/min" Cursor Off Loop End Pytania: Chciałbym zmodyfikować program aby w zależności od obrotów zmianiało się wypełnienie impulsów PWM. Czy rolę licznika w programie może pełnić timer2 a Timer1 wykorzystać jako 2 kanałowy PWm ? Jak zrobić aby zmieniał się płynnie kolor diody RGB z niebieskiego na czerwony w zakresie obrotów np. 1000 - 7000 ?
  9. jednak drgania styków były przyczyną złego działania. Dzieki za pomoc.
  10. który przycisk to już bez różnicy oba tak samo. między 1 a 15 ms jest różnica widoczna
  11. wpisywałem program do procesora. i mam do PC5 podłączoną diodę przez rezystor 100ohm a do pc3-4 przyciski zwierające do masy. Program powoduje albo stałe świecenie diody lub po naciśnięciu przycisku ( pare razy ) zaskakuje po pewnym czasie.
  12. tylko że chodzi mi o zmiany od 1 do max 15 ms
  13. tylko program i tak nie działa jak powinien. Chodziło mi o to żeby regulować częstotliwości mrugania diody za pomocą przycisków.
  14. mam kod: $regfile = "m8def.dat" $crystal = 8000000 Config Pinc.5 = Output Portc.5 = 0 Config Pinc.4 = Input Portc.4 = 1 Config Pinc.3 = Input Portc.3 = 1 Do Dim X As Byte X = 1 If Pinc.4 = 0 Then X = X + 1 End If If Pinc.3 = 0 Then X = X - 1 End If Waitms X Toggle Portc.5 Loop End jak zmodyfikować ten kod aby reagował zaraz po naciśnięciu przycisku i aby zmienna X była zapamiętywana w eeprom ?
×
×
  • Utwórz nowe...