Arduino Polska Forum
Programowanie Attiny85 z Serial. - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Mikrokontrolery (https://forum.arduinopolska.pl/dzial-mikrokontrolery)
+--- Wątek: Programowanie Attiny85 z Serial. (/watek-programowanie-attiny85-z-serial)



Programowanie Attiny85 z Serial. - jaanonim - 20-08-2018

Witam,

Chcę zrobić podajnik karmy na attiny85. Dwa razy dziennie ma podawać karmę przy użyciu serwa.
Problem polega na tym że: wysłane informacje po serialu są nieczytelne, poza tym powinny być wysyłane co sekundę a są wysyłane w większy dostępie czasowym(np. 3-4 s).

Oto kod:
Kod:
#include <Time.h>
#include <TimeLib.h>

#include <SoftwareSerial.h>



SoftwareSerial mySerial(3,4);

int servopin = 2;

void servopulse(int servopin,int myangle)
{
  for(int i=0;i<=15;i++) 
  {
  int pulsewidth=(myangle*11)+500;
  digitalWrite(servopin,HIGH);
  delayMicroseconds(pulsewidth);
  digitalWrite(servopin,LOW);
  delay(20-(pulsewidth*0.001));
  }
}

void setup() {
  
  mySerial.begin(9600);
  servopulse(servopin,0);
  servopulse(servopin,0);
  setTime(11,29,50,1,1,2017);
  pinMode(servopin,OUTPUT);
}
    
void loop() {
  
  digitalClockDisplay();
  delay(1000);
 
  if(second()==00 && minute()==30 && hour()==11)
  {
    karm();
    delay(990);
  }
  if(second()==0 && minute()==00 && hour()==16)
  {
    karm();
    delay(990);
  }
  
 
}

void digitalClockDisplay()
{
  mySerial.print(hour());
  mySerial.print(":");
  mySerial.print(minute());
  mySerial.print(":");
  mySerial.print(second());
  mySerial.print(" ");
  mySerial.print(day());
  mySerial.print(".");
  mySerial.print(month());
  mySerial.print(".");
  mySerial.println(year());  
}

void karm()
{
  servopulse(servopin,0);
  servopulse(servopin,60);
  delay(10);
  servopulse(servopin,0);
  mySerial.println("Karmie");
}

Proszę o pomoc!


RE: Programowanie Attiny85 z Serial. - kaczakat - 20-08-2018

Wgrałeś bootloader, ustawiłeś zegar na wewnętrzny bez dzielnika div 8?Jak odczytujesz fuse bity - podaj wartości.


RE: Programowanie Attiny85 z Serial. - jaanonim - 20-08-2018

(20-08-2018, 19:00)kaczakat napisał(a): Wgrałeś bootloader, ustawiłeś zegar na wewnętrzny bez dzielnika div 8?Jak odczytujesz fuse bity - podaj wartości.

Bootloader-a nie używam programuje przez ICSP. Używam zegara wewnętrznego 16MHz.


RE: Programowanie Attiny85 z Serial. - kaczakat - 20-08-2018

Wgranie bootloadera ustawiłoby fusebity (w tym prędkość zegara) tak jak masz ustawione w opcjach projektu, np. na 16MHz. Jeśli rzeczy dzieją się 4x wolniej, a UART wysyła krzaki to znaczy, że zegar jest inny niż Ci się wydaje.


RE: Programowanie Attiny85 z Serial. - jaanonim - 20-08-2018

(20-08-2018, 21:24)kaczakat napisał(a): Wgranie bootloadera ustawiłoby fusebity (w tym prędkość zegara) tak jak masz ustawione w opcjach projektu, np. na 16MHz. Jeśli rzeczy dzieją się 4x wolniej, a UART wysyła krzaki to znaczy, że zegar jest inny niż Ci się wydaje.

Dzięki po wgraniu bootloadera wszystko działa jak należy. Rolleyes


RE: Programowanie Attiny85 z Serial. - es2 - 21-08-2018

(20-08-2018, 21:06)jaanonim napisał(a):
(20-08-2018, 19:00)kaczakat napisał(a): Wgrałeś bootloader, ustawiłeś zegar na wewnętrzny bez dzielnika div 8?Jak odczytujesz fuse bity - podaj wartości.

Bootloader-a nie używam programuje przez ICSP. Używam zegara wewnętrznego 16MHz.

Pokaż kod programu jak ustawiasz te 16MHz.


RE: Programowanie Attiny85 z Serial. - Irvin - 21-08-2018

Alesz proszę pana, pszeciesz 16MHz się ustawia fusami, nie w kodzie!


RE: Programowanie Attiny85 z Serial. - es2 - 22-08-2018

(21-08-2018, 23:16)Irvin napisał(a): Alesz proszę pana, pszeciesz  16MHz się ustawia fusami, nie w kodzie!

Ależ proszę pana opcje oscylatora można ustawiać zarówno kodem jak i bitami konfiguracyjnymi, to po pierwsze "primo".
Po drugie "primo" wewnętrzny oscylator Tiny85 to 8MHz. Tiny ma jednak PLL i można ustawić taktowanie CPU 16MHz a timera nawet 64MHz. Aby to zrobić należy:
- ustawić bit konfiguracyjny programatorem lub z programu
- skonfigurować PLL.

Tak, więc proszę pana, trzeba się dokształcić bo inaczej palnie się gafę na forum próbując wykazać swoją mądrość.


RE: Programowanie Attiny85 z Serial. - Irvin - 22-08-2018

Gafę zrobić może tylko ekspert, np. taki, który pomaga w rozwiązanym problemie.


RE: Programowanie Attiny85 z Serial. - es2 - 22-08-2018

(22-08-2018, 12:57)Irvin napisał(a): Gafę zrobić może  tylko ekspert,  np. taki, który pomaga w rozwiązanym problemie.

Pytanie o szczegóły programu to nie gafa.

Przeczyta początkujący złe porady i pomyśli, że magicznie, uC Tiny85 zacznie pracować na wewnętrzym generatorze RC 16MHz, generatorze, którego Tiny85 nie posiada.
Posiada 8MHz, innego tam nie ma. Można taktowac CPU zegarem 16MHz ale generator nadal ma 8MHz.
NIE DA SIĘ więc taktować Tiny85 wewnętrznym generatorem 16MHz, TO JEST FAKT, a z faktami się nie dyskutuje.
Dyskutuje się natomiast, bezproduktywnie, jak się ma małą wiedze a chce się pokazać, że owa wiedza jest ogromna. Wtedy pisze się posty, które nic nie wnoszą do tematu. Pisze się aby pisać, aby się wykazać, w praktyce swoją niewiedzą. W ten sposób wiele osób ośmiesza się na forach, a fora czytają także pracodawcy, nauczycie, znajomni, współpracownicy, koledzy z piaskownicy, itd.