Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

AT90PWM316
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: ne prosinec 10 2017, 20:08    Předmět: Citovat

muj Makefile

all: blikac-ukazka.elf

blikac-ukazka.elf: blikac-ukazka.c
avr-gcc -mmcu=at90pwm316 -g -o $@ $^ -Wall -O2 -I. -lgcc

clean:
$(RM) blikac-ukazka.elf

a chyba linkeru tam evidentne je >>>

david22:~/Documents/Elektronika/AT90PWM3/test# make clean
rm -f blikac-ukazka.elf
david22:~/Documents/Elektronika/AT90PWM3/test# make
avr-gcc -mmcu=at90pwm316 -g -o blikac-ukazka.elf blikac-ukazka.c -Wall -O2 -I. -lgcc
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtat90pwm316.oSad.init9+0x0): undefined reference to `main'
collect2: error: ld returned 1 exit status
Makefile:4: návod pro cíl „blikac-ukazka.elf“ selhal
make: *** [blikac-ukazka.elf] Chyba 1
david22:~/Documents/Elektronika/AT90PWM3/test#
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: ne prosinec 10 2017, 20:24    Předmět: Citovat

A čteš, co ti to píše za chyby? Undefined reference to main, nemáš tam main funkci.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: po prosinec 11 2017, 22:18    Předmět: Citovat

@david69: problémy jsou od toho, aby se řešily.
Díky těmto "chybám" se posuneš dopředu a naučíš se něco nového.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: út prosinec 12 2017, 9:56    Předmět: Citovat

kdyz se da -nostdlib, tak se musi definovat funkce"_start"
kdyz se neda -nostdlib, tak se musi definovat funkce "main"
v principu je jedno jestli to ma bezet s prikazovy radky nebo z Makefile,
melo by to chodit v obou pripadech, tu matematickou knihovnu -lgcc
myslim pro nas testovaci program nepotrebujeme Smile
divny ovsem je? ze s while a s delay jsou ruzny vysledky, kdyz je to
porad stejny!
#define F_CPU 8000000UL // frekvence CPU v Hz
#include <avr/io.h>
#include <util/delay.h>

void _start(void)
{
DDRC = 0xFF; //Nakes PORTC as Output
while(1) //infinite loop
{
PORTC = 0xFF; //Turns ON All LEDs
_delay_ms(1000);

PORTC= 0x00; //Turns OFF All LEDs
_delay_ms(1000);
}
}

delay nebo while, je to stejny, muzete to vyzkouset v AVRStudiu? diky
david
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: st prosinec 13 2017, 19:26    Předmět: Citovat

@main,
citace:
Every full C program begins inside a function called "main".

@while a delay_ms() dá různý výsledek, neboť jsou to dva různé programy.
Pokud se podíváš do delay.h, tak uvidíš, jak je funkce napsaná.
Na druhou stranu, smyčka
kód:
i=1;
while(i<255)
může trvat různě, podle toho jak to gcc přeloží a zoptimalizuje.
Pro účely časování je nejlépe použít timer, když už nám ho tam výrobci čipů dali. S časovačem se dají dělat různé zábavné věci, dokonce i bez nutnosti použit přerušení.
kód:
int8_t time, time_mem;

main()
{
  setup(); // setup TCNT0 as free-running
  while(1)
  {
    time = TCNT0;
    // ...

    if ((time - time_mem) >= (20))
    {
      time_mem = time;
      // ...
      if (PORTB != 0)
      {
        PORTB = 0x00;
      }
      else
      {
        PORTB = 0xff;
      }
    }
  }
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: st prosinec 13 2017, 20:04    Předmět: Citovat

frpr666 napsal(a):
@main,
citace:
Every full C program begins inside a function called "main".
To není dogma, jenom dohoda, jak se bude jmenovat vstupní bod, odkud začíná kód psaný aplikačním programátorem. Na adresu s návěštím __main se předá řízení po ukončení start-up části kódu, která nastavuje zásobník a dělá jiné věci v závislosti na operačním systému tak, aby se aplikace v systému správně usídlila. Pokud bychom tento start-up kód upravili, mohlo by se volat úplně něco jiného. Například programátoři pod Win API vědí, že jejich program s grafickým rozhraním začíná funkcí WinMain. Existují i další MS rozšíření - _tmain, což se preprocesorem přeloží jako main nebo wmain podle toho, jestli v aplikaci pracujeme se znakovou sadou ASCII - pro main nebo s Unicode (UTF16) - pak je to wmain.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: čt prosinec 14 2017, 18:08    Předmět: Citovat

no dobre, avr-gcc vyplodi kod ktery nejde, ale kdyz zadavany kod disassembluju

.INCLUDE "pwm3def.inc"
.LIST
.EQU DDR=DDRC
.EQU PORT=PORTC
.cseg
.org 0

ldi r24, 0xFF ; 0000 EF8F
out DDR, r24 ; 0001 B987
avr0002: out PORT, r24 ; 0002 B988
ldi r18, 0xFF ; 0003 EF2F
ldi r19, 0x69 ; 0004 E639
ldi r25, 0x18 ; 0005 E198
avr0006: subi r18, 0x01 ; 0006 5021
sbci r19, 0x00 ; 0007 4030
sbci r25, 0x00 ; 0008 4090
brne avr0006 ; 0009 F7E1
rjmp avr000B ; 000A C000
avr000B: nop ; 000B 0000
out PORT, r1 ; 000C B818
ldi r18, 0xFF ; 000D EF2F
ldi r19, 0x69 ; 000E E639
ldi r25, 0x18 ; 000F E198
avr0010: subi r18, 0x01 ; 0010 5021
sbci r19, 0x00 ; 0011 4030
sbci r25, 0x00 ; 0012 4090
brne avr0010 ; 0013 F7E1
rjmp avr0015 ; 0014 C000
avr0015: nop ; 0015 0000
rjmp avr0002 ; 0016 CFEB

.exit
a podstrcim AVRStudiu tak hex file bezi! je celkem pochopitelny ze vysledny
hex kody nebudou stejny, i v pripade kdyz pouziju optimalizaci,
ale porad si nejsem vedomej svoji chyby? kde je v mojem avr-gcc chyba??

dave
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: čt prosinec 14 2017, 21:12    Předmět: Citovat

@ avr-gcc vyplodi kod ktery nejde.
Tak nasdílej C file, a gcc argumenty a co se očekává od programu.
Kód, který si dělá co chce a né to co si prográmátor přeje, to je docela běžná věc. Very Happy
https://www.cbsnews.com/news/toyota-unintended-acceleration-has-killed-89/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: so prosinec 16 2017, 7:03    Předmět: Citovat

urcite je kod, ktery pracuje jinak nez si programator preje, jenze jsem prisel na takovou
malickost, ze Intel hex kod vyprodukovany avr-gcc nebo AVRStudiem flashovany pres ISP
AVRStudiem je 100% funkcni a dela to co programator ocekava! Jenze se to neda rici
o AVRDUDE ktery flashuje blbe, nekdy je vysledek OK, jindy ne Sad Mozna mam rychle nastavenou ISP sbernici, ale urcite tenhle flashator neni 100% pro AT90PWM316!!!
tak jak dale postupovat....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: so prosinec 23 2017, 9:36    Předmět: Citovat

avrdude version 6.3, URL: <http://savannah.nongnu.org/projects/avrdude/>
david22:~# avrdude -c stk500 -p pwm316

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9483 (probably pwm216)

avrdude: safemode: Fuses OK (E:F9, HVery HappyF, L:4E)

avrdude done. Thank you.

david22:~#

??? tak co je to za chip 0x1e9483 ???
na pouzdre je AT90PWM316 ???? diky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: so prosinec 23 2017, 9:54    Předmět: Citovat

A nožiček to má kolik? Embarassed
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: so prosinec 23 2017, 9:54    Předmět: Citovat

at90pwm1=0x1E9383
at90pwm216=0x1E9483
at90pwm2=0x1E9381
at90pwm2b=0x1E9383
at90pwm316=0x1E9483
at90pwm3=0x1E9381
at90pwm3b=0x1E9383
at90pwm81=0x1E9388
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: so prosinec 23 2017, 9:58    Předmět: Citovat

http://www.datasheetdir.com/AT90PWM316+AVR-microcontrollers

tohle popisove sedi, bud PWM3,PWM3B nebo PWM316
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: so prosinec 23 2017, 10:03    Předmět: Citovat

0x1e9483 je AT90PWM216 nebo AT90PWM316, liší se jen počtem nožiček, stačí umět počítat do 32. Embarassed
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
david69



Založen: Jan 04, 2007
Příspěvky: 409

PříspěvekZaslal: ne prosinec 24 2017, 13:24    Předmět: Citovat

poslal jsem datasheet, je tam snad tech 2x16 pinu videt,ne?
na pouzdre je 90PWM316-16SU a mam k dispozici 90PWM3B ktery
avrdude detekuje spravne,,,,
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.15 sekund